2009-08-21 34 views
5

tôi cần sự giúp đỡ trong việc tạo ra một chủ đề, C# WinformsCách tạo chuỗi trong WinForms?

private void button1_Click(object sender, EventArgs e) { 
    Thread t=new Thread(new ThreadStart(Start)).Start(); 
} 

public void Start() { 
    MessageBox.Show("Thread Running"); 
} 

tôi tiếp tục nhận được tin nhắn này:

Cannot implicitly convert type 'void' to 'System.Threading.Thread 

phải làm gì tài liệu MSDN là không tốt

Trả lời

14

này sẽ làm việc:

Thread t = new Thread (new ThreadStart (Start)); 
t.Start(); 

Và điều này sẽ làm việc cũng như:

new Thread (new ThreadStart(Start)).Start(); 

Các tài liệu MSDN là tốt và đúng, nhưng bạn đang làm nó sai. :) Bạn làm điều này:

Thread t = new Thread (new ThreadStart(Start)).Start(); 

Vì vậy, những gì bạn làm ở đây trên thực tế, là cố gắng phân định đối tượng được trả về bởi phương thức Start() (đó là khoảng trống) cho một đối tượng Thread; do đó thông báo lỗi.

+2

Đặc biệt, các tài liệu MSDN chỉ ra rằng kiểu trả về của 'Bắt đầu()' là khoảng trống ... –

2

Hãy thử tách nó lên như chẳng hạn:

private void button1_Click(object sender, EventArgs e) 
{ 
    // create instance of thread, and store it in the t-variable: 
    Thread t = new Thread(new ThreadStart(Start)); 
    // start the thread using the t-variable: 
    t.Start(); 
} 

Thread.Start - phương thức trả về void (tức là không có gì), vì vậy khi bạn viết

Thread t = something.Start(); 

bạn đang cố gắng để thiết lập các kết quả của Start -method, đó là vô hiệu, đến t -variable. Điều này là không thể, và vì vậy bạn phải chia tuyên bố thành hai dòng như được chỉ định ở trên.

2

Khuôn khổ .NET cũng cung cấp lớp chủ đề tiện dụng BackgroundWorker. Nó là tốt đẹp bởi vì bạn có thể thêm nó bằng cách sử dụng VisualEditor và thiết lập tất cả các thuộc tính của nó.

Đây là một hướng dẫn nhỏ đẹp (có hình ảnh) về cách sử dụng BackgroundWorker: http://dotnetperls.com/backgroundworker

+1

tôi 'd phải thứ hai gợi ý đó. Cách tiếp cận của BackgroundWorker thân thiện hơn nhiều so với sử dụng Thread. Nó cũng giúp bạn sắp xếp dữ liệu giữa chuỗi giao diện người dùng và chuỗi công việc. –

Các vấn đề liên quan