c# – 从特定线程调用方法
发布时间:2020-12-15 08:18:44 所属栏目:百科 来源:网络整理
导读:我如何在调用SomeAsyncMethod的同一线程上调用onCompleteCallBack方法? public void SomeAsycMethod ( Actionobject onCompleteCallBack ){ // get the current thread /* var ThisThread = Thread.CurrentThread. */ Task.Factory.StartNew( () = { Thread
我如何在调用SomeAsyncMethod的同一线程上调用onCompleteCallBack方法?
public void SomeAsycMethod ( Action<object> onCompleteCallBack ) { // get the current thread /* var ThisThread = Thread.CurrentThread. */ Task.Factory.StartNew( () => { Thread.Sleep( 1000 );// do some work; // lastly call the onCompleteCallBack on 'ThisThread' onCompleteCallBack( "some result" ); // I am looking for something like: /* ThisThread.Invoke("some result"); */ }); } 解决方法
虽然你不能保证你会在同一个线程上调用回调,但你可以保证它将在同一个
Synchronization Context中被调用(假设原始调用中存在一个).
public void SomeAsycMethod ( Action<object> onCompleteCallBack ) { // get the current context var context = SynchronizationContext.Current; Task.Factory.StartNew( () => { Thread.Sleep( 1000 );// do some work; // lastly call the onCompleteCallBack on 'ThisThread' onCompleteCallBack( "some result" ); // I am looking for something like: context.Post(s => onCompleteCallBack ("some result"),null); }); } 例如,在Windows窗体或WPF程序中,上面将确保在GUI线程上调用回调(相应地通过消息循环或调度程序).类似于ASP.NET上下文. 话虽如此,我同意Justin Harvey的回复任务< T>可能会是一个更好的设计. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – Rails每当gem:每个月在20日
- flex打印系列教程三用FlexReport打印多页
- VB.Net程序设计:从DataGridView拖放一行数据到TreeView中的
- swift__UITableView 的数据源方法 和 代理方法
- 设计模式之六大原则——依赖倒置原则(DIP)
- 如何查看输入的值是否为数字而不是字符?
- 这个解析器设计模式叫什么?使用包含关键字和函数指针的结构
- [转]深入浅出Flex组件生命周期Part1─ 使用ActionScript3开
- Flex 3 发现之旅:AdvancedDataGrid的使用
- c# – Application.Exit()哪个操作是第一个