类库(通用应用程序的便携式) System.Threading.Thread 限制
Posted
技术标签:
【中文标题】类库(通用应用程序的便携式) System.Threading.Thread 限制【英文标题】:Class Library (Portable for Universal Apps) System.Threading.Thread limitations 【发布时间】:2014-12-26 18:53:13 【问题描述】:我使用 Visual Studio 2013 Ultimate Update 4 创建一个类型为“类库(通用应用程序便携)”的新项目。生成的 PCL 针对两个平台,即 Windows 8.1 和 Windows Phone 8.1,这正是我所需要的。
System.Threading.Thread 类在此子集中不受支持。 当我使用另外两个平台(.NET Framework 4.5.1 和 Silverlight 5)扩展程序集目标时,System.Threading.Thread 神秘地出现并变得可用。 我尝试使用它,它可以在 Windows.Phone 8.1 和 Windows 8.1 Store 应用程序中完美运行。
为了推动开发人员采用异步/等待模式,我是否理解 System.Threading.Thread 类只是从“默认”PCL 配置中隐藏?
抛开不同异步执行和线程管理模型的优缺点比较,在上述场景中使用 System.Threading.Thread 类是否存在技术缺陷?
提前致谢。
【问题讨论】:
你真的需要使用 Thread 类,而不能用 Task 做同样的事情吗?你在做什么有点hacky。如果你真的需要它并且它可以工作 - 很好,但如果你不需要它,你最好切换到任务。 能否尝试通过商店认证(WACK)运行应用,看看是否通过? @PeterTorr 我针对我的应用程序运行了 Windows App Certification Kit 3.4,它成功通过了所有测试。 【参考方案1】:在与 .NET 团队的 David Kean 讨论后,这是预期的行为,但请注意,您确实不能访问完整的 .NET Thread
类;你只会得到一些东西,比如ManagedThreadId
和CurrentUICulture
。
因此,您仍然需要使用线程池或基于任务的 API 才能运行并行操作。
【讨论】:
很高兴能得到 David 关于第二件事的意见:***.com/questions/27660915/…以上是关于类库(通用应用程序的便携式) System.Threading.Thread 限制的主要内容,如果未能解决你的问题,请参考以下文章
便携式类库 / mvvmcross 中的 Skydrive 同步
无法在通用 Windows 或 WPF 应用程序中引用 .NET Core 类库