我有一个方法,代码如下:
object frm = null;
// shows the overlay loading mask
Core.ShowLoadingMask("Please wait...");
// start task
Task.Factory.StartNew(() => {
// go to server and get the data
var employee = new Data.Entities.Employee(employeeId);
// instantiate the class type (reflection)
frm = Activator.CreateInstance(type, employee );
}).ContinueWith((task) => {
// hide loading mas
Core.HideLoadingMask();
if (frm != null) this.Panel.Controls.Add(frm);
});
那么,我怎样才能强制 ContinueWith()
中的代码强制使用当前线程,或者我做错了。
我需要的流程是:
- 在从服务器获取数据之前显示加载掩码
- 从服务器获取数据(可能需要 3 秒)
- 然后退出任务并隐藏加载掩码。
有什么线索吗?
最佳答案
通过 TaskScheduler.FromCurrentSynchronizationContext()
到 ContinueWith()
...
.ContinueWith((task) => {
// hide loading mas
Core.HideLoadingMask();
if (frm != null) this.Panel.Controls.Add(frm);
}, TaskScheduler.FromCurrentSynchronizationContext());
关于c# - Task.Continuewith(在当前线程上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23645302/