我有一个 WCF 服务接口:
[OperationContract]
void BeginDelete(MyParams params);
,如下所示:
private CancellationTokenSource _cancelSource;
...
public void BeginDelete(MyParams params)
{
....
_cancelSource = new CancellationTokenSource();
var cancelToken = _cancelSource.Token;
var task = System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
bool done = false;
while (!done)
{
cancelToken.ThrowIfCancellationRequested();
// Deleting stuff from database...
// Carry on deleting until there is no more to delete
// or user cancels midway.
}
// Operation is now complete so update GUI (e.g. callback).
}
catch
{
throw;
}
}, cancelToken);
task.ContinueWith(t =>
{
Console.WriteLine("Faulted...");
}, System.Threading.Tasks.TaskContinuationOptions.OnlyOnFaulted);
task.ContinueWith(t =>
{
Console.WriteLine("Canceled...");
}, System.Threading.Tasks.TaskContinuationOptions.OnlyOnCanceled);
}
我正在从我的 Web GUI 调用此服务 SOAP(例如,带有"删除"按钮的 jQuery 对话框(。
在操作过程中,我显示一个带有进度条的对话框,但这是我的问题......
对话框保持打开状态,因为它不知道操作已完成。
如何从服务器端传达更新 GUI 的请求?
在你的其他ContinueWith
之后像这样的东西:
task.ContinueWith(t =>
{
dialog.Close()
});