private int DoSomething() { return 5; } int x = 0; // biến sẽ lưu giá trị trả về private void DoSomething_Click(object sender, EventArgs e) { Thread t= new Thread(delegate() { x = DoSomething(); }); t.Start(); t.Join(); // Chờ thread làm xong thì đồng bộ với luồng chính tbResult.Text = x.ToString(); } }
Phiên bản Console:
class Program
{
private static int DoSomething()
{
return 5;
}
static int x = 0;
[STAThread]
static void Main(string[] args)
{
Console.WriteLine(x.ToString());
Thread t= new Thread(delegate()
{
x = DoSomething();
});
t.Start();
t.Join(); // Chờ thread thực hiện xong công việc rồi đồng bộ
Console.WriteLine(x.ToString());
Console.Read();
}
}
Giả sử bản thân Thread t trong phiên bản winform có tác động làm, hay đang cố thay đổi một thuộc tính nào đó trong Form đã gọi nó, thì bạn cần phải chú ý các thao tác đồng bộ với nó. Bằng phương thức BeginInvoke() của Form. Nếu không, nó có thể báo lỗi
0 comments:
Đăng nhận xét