Доступ к объекту из другого потока - C#
Формулировка задачи:
Привет, подскажите, как исправить ошибку
Выводит на textBox1.Text и listBox1 ошибку "Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток."
Спасибо
private void button1_Click(object sender, RoutedEventArgs e)
{
Thread parse_1 = new Thread(parse1);
parse_1.Start();
}
void parse1()
{
if (textBox1.Text != "")
{
for (int i = 0; i < 10; i++)
{
listBox1.Items.Add(i);
}
}
}Решение задачи: «Доступ к объекту из другого потока»
textual
Листинг программы
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Name="grid">
<Button Click="Button_Click_1" Content="Button" HorizontalAlignment="Left" Margin="221,48,0,0" VerticalAlignment="Top" Width="75"/>
</Grid>
</Window>
using System;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Reflection;
public delegate void d();
namespace WpfApplication3
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
TextBox box;
private void Button_Click_1(object sender, RoutedEventArgs e)
{
//MessageBox.Show(Convert.ToString(Tree.Items.Count));
Thread t = new Thread(function);
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
public void function()
{
box = new TextBox();
//Dispatcher.Invoke(new Action(() => grid.Children.Add(box)));//здесь тоже выдает ошибку
grid.Children.Add(box);//выдает ошибку
}
}
}