2013-01-25 33 views
4

的Windows 8商店應用不支持主題了:在一個System.Threading.Thread沒有在Windows 8商店應用支持

protected static Thread m_thread = null; 

然後:

我創建類庫線程功能:

m_thread = new Thread(new ParameterizedThreadStart(RunDetection)); 
m_thread.Start(Something); 

我還需要中止功能:

m_thread.Abort(); 

如何在WIN8商店應用程序中執行此操作?

+3

不應該在任何類型的環境中中止線程。 – Servy

+0

訪問'System.Threading'命名空間對於Windows應用商店應用程序來說完全是爲了強制每個I/O或網絡綁定任務實施異步API。現在,線程池線程(通過在Windows.System.Threading命名空間中引入的TPL或'Threadpool'類)是異步排隊工作的唯一方法,它不必在主應用程序線程上運行。 – RBT

回答

0

手動創建線程通常是一種不好的做法。你應該深刻理解多線程才能獲得優勢。考慮使用ThreadPool

ThreadPool.QueueUserWorkItem(_ => { RunDetection(); }); 

此外,只要有可能就使用異步方法。即SomeActionAsync,BeginSomeAction等。如果類沒有實現異步方法,則使用ThreadPool來運行同步方法。

+4

「通常不好的做法」 - 不贊同;僅僅因爲你需要對某些東西有一個很好的理解並不意味着使用它是不好的做法。 – Andy

+4

這就是爲什麼我寫「通常」,而不是「永遠」。在90%的情況下直接使用線程會比使用其他異步技術的效率低。如果您需要使用I/O - 請使用支持I/O完成端口的異步方法,如果您需要異步運行一些小操作 - 請使用ThreadPool,如果需要運行一些長操作 - 請使用BackgroundWorker,if你需要進行一些繁重的計算 - 請使用「任務並行庫」,這將涉及所有的CPU核心。你必須有真正的具體任務來直接使用線程。 –

相關問題