从 GUI 启动服务器端操作并在操作完成后更新 GUI
Posted
技术标签:
【中文标题】从 GUI 启动服务器端操作并在操作完成后更新 GUI【英文标题】:Starting server side operation from GUI and updating GUI once operation is done 【发布时间】: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 的请求?
【问题讨论】:
【参考方案1】:在你的另一个 ContinueWith
s 之后是这样的:
task.ContinueWith(t =>
dialog.Close()
);
【讨论】:
以上是关于从 GUI 启动服务器端操作并在操作完成后更新 GUI的主要内容,如果未能解决你的问题,请参考以下文章