- Tại sao tôi nhận được thông báo lỗi này? "WaitAll cho nhiều xử lý trên một chuỗi STA không được hỗ trợ."
- Tôi có nên sử dụng [MTAThreadAttribute] không? Cập nhật: Không được làm việc với các ứng dụng WPF!
Lưu ý: Lỗi ở dòng WaitHandle.WaitAll (doneEvents); Tôi đang sử dụng dự án WP2 tiêu chuẩn.WaitAll cho nhiều xử lý trên một chuỗi STA không được hỗ trợ
private void Search()
{
const int CPUs = 2;
var doneEvents = new ManualResetEvent[CPUs];
// Configure and launch threads using ThreadPool:
for (int i = 0; i < CPUs; i++)
{
doneEvents[i] = new ManualResetEvent(false);
var f = new Indexer(Paths[i], doneEvents[i]);
ThreadPool.QueueUserWorkItem(f.WaitCallBack, i);
}
// Wait for all threads in pool
WaitHandle.WaitAll(doneEvents);
Debug.WriteLine("Search completed!");
}
Cập nhật: Các giải pháp sau đây không hoạt động cho các ứng dụng WPF! Không thể thay đổi thuộc tính ứng dụng chính thành MTAThreadAttribute. Điều này sẽ dẫn đến lỗi sau:
Lỗi: "WaitAll cho nhiều xử lý trên chuỗi STA không được hỗ trợ".
Bạn nhận ra rằng bạn ứng dụng sẽ đóng băng hoàn toàn cho đến khi những Indexer được thực hiện? – liggett78
Có! Tôi biết điều đó. Nhưng vì nó không chạy. –
http://stackoverflow.com/questions/3784510/notsupportedexception-on-waithandle-waitall –