从 GUI 启动服务器端操作,并在操作完成后更新 GUI



我有一个 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()
    });

最新更新