30/09/2018, 22:30
[WPF] đoạn thread này sai ở đâu?
Theo khái niệm mà e nắm bắt được thì thread là thực hiện nhiều công việc trong cùng 1 lúc.
vậy bác nào giải ngố giúp e đoạn này sao nó ko hoạt động
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Thread a = new Thread(() => {
textBox.Text = "text";
});
a.Start();
}
}
Và
Thread a = new Thread(new ThreadStart(MethodA)); a.Start(); MethodB();
với
Thread a = new Thread(new ThreadStart(MethodA)); a.Start(); Thread b = new Thread(new ThreadStart(MethodB)); b.Start();
khác nhau như thế nào ???
Bài liên quan
vậy nếu ko sử dụng dữ liệu của thread khác, thì m phải đưa cả method vào hả bác? Kể cả method của đối tượng khác?
Hình như bạn đang có hiểu nhầm gì ở đây ? Không hiểu ý bạn muốn hỏi gì nhưng giải thích them tý ở dưới
Một Thread sẽ được tạo ra từ Thread khác ( trừ Thread Main) và đương nhiên nó sẽ có lien quan về dữ lieu với các Thread khác. Ví dụ nó sẽ sử dung chung dữ lieu với Thread tạo ra nó hoặc với các Thread khác.
Nếu dữ lieu / đối tượng mà nó dung của Thread khác không phải/ kế thừa DependencyProperty (tài sản phụ thuộc - điển hình là các thuộc tính của Control đều là DependencyProperty) hoặc kế thừa DependencyObject(ví dụ WriteableBitmap) thì sẽ không có Cross-Thread xảy ra. Lúc ấy ta chỉ cần lưu tâm đến việc sử dung sao cho không xảy ra deadlock.
Còn trường hợp sử dung dữ lieu/đối tượng của Thread khác mà nó là DependencyProperty hoặc DependenObject thì sẽ có Cross-Thread. Khi đó phải sử dung Dispatcher để có thể truy cập đến các dữ lieu/đối tượng này.
(Mình không đưa code ví dụ vì nó dài )