【发布时间】:2018-09-28 16:29:19
【问题描述】:
我有一个 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);
}
我正在使用 SOAP 从我的 Web GUI 调用此服务(例如,带有“删除”按钮的 jQuery 对话框)。
当操作正在进行时,我会显示一个带有进度条的对话框,但这是我的问题...
对话框保持打开状态,因为它不知道操作已完成。
如何从服务器端传达更新 GUI 的请求?
【问题讨论】:
标签: c# web-services wcf asynchronous soap