Доступ к объекту из другого потока - 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);//выдает ошибку } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д