2013-01-25 34 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核心。你必须有真正的具体任务来直接使用线程。 –

相关问题