Joe*_*ite 16 multithreading windows-runtime
在WinForms中,几乎所有UI都是特定于线程的.您必须使用[STAThread]
以便公共对话框可以工作,并且您不能(安全地)从创建它的任何线程之外的任何线程访问UI元素.从我所听到的,那是因为这就是Windows的工作方式 - 窗口句柄是特定于线程的.
在WPF中,保留了这些相同的限制,因为最终它仍然建立在相同的Windows API之上,仍然是窗口句柄(尽管主要用于顶级窗口),等等.事实上,WPF甚至使事情更具限制性,因为你甚至无法跨线程访问位图等内容.
现在一直是WinRT,一种全新的访问Windows的方式 - 一个新鲜,干净的平板.我们是否仍然坚持使用相同的旧线程限制(具体来说:只能从创建它的线程中操作UI控件),还是让他们打开它?
我希望它是相同的模型 - 但更容易使用,至少从C#和VB,使用新的异步处理,它允许你编写一个同步的方法,只需要等待"等待"在继续之前完成的长期任务.
鉴于强调使异步代码更容易编写,MS会放弃同时要求单线程访问UI的效率,这将是令人惊讶的.
线程模型是相同的.仍然存在单线程和多线程公寓(STA/MTA)的概念,必须通过调用RoInitialize来初始化它.其行为与名称,参数和错误返回中的CoInitialize非常相似.用户界面线程是单线程的,在此视频中的36:00确认.
归档时间: |
|
查看次数: |
3455 次 |
最近记录: |