C# Silverlight ChildWindow在回调时未正确关闭
我有一个简单的ChildWindow,它只包含两个元素,textblock和一个进度条来模拟等待屏幕。该子窗口在调用异步WCF方法之前启动,并在回调时关闭 问题是第二次关闭ChildWindow时,整个曲面将保持禁用状态。我搜索过类似的情况,其中一个提到Close方法被调用了两次,这不是我的情况 以下是一些示例代码(svc是WCF服务):C# Silverlight ChildWindow在回调时未正确关闭,c#,silverlight,childwindow,C#,Silverlight,Childwindow,我有一个简单的ChildWindow,它只包含两个元素,textblock和一个进度条来模拟等待屏幕。该子窗口在调用异步WCF方法之前启动,并在回调时关闭 问题是第二次关闭ChildWindow时,整个曲面将保持禁用状态。我搜索过类似的情况,其中一个提到Close方法被调用了两次,这不是我的情况 以下是一些示例代码(svc是WCF服务): 任何一个指针都会被感激的,我想我这里缺少了一些基本的东西。要在等待异步调用时显示窗口,我将使用来自的“BusyIndicator” 无论如何,如果Waitin
任何一个指针都会被感激的,我想我这里缺少了一些基本的东西。要在等待异步调用时显示窗口,我将使用来自的“BusyIndicator” 无论如何,如果WaitingScreen是一个ChildWindow,它应该返回一个值(Accept或Cancel)来关闭。也许这就是问题所在 Close方法被调用两次,这不是我的情况 我想可能是的。考虑调用<代码> DoSomething < /C> >两次DelCikes被分配给<代码> SaveCopMult/<代码>,有多少已被删除?答:现在已添加2个,但未删除任何一个。因此,当它第二次完成时,将快速连续调用两次
Close
请尝试以下代码,该代码在委托被触发一次后将其删除
public void DoSomething()
{
var wait = new WaitingScreen();
EventHandler<AsyncCompletedEventArgs> saveCompleted = null;
saveCompleted = (s, arg) =>
{
wait.Close();
svc.SaveCompleted -= saveCompleted;
};
svc.SaveCompleted += saveCompleted;
wait.Show();
svc.SaveAsync();
}
public void DoSomething()
{
var wait=新建等待屏幕();
EventHandler saveCompleted=null;
保存完成=(s,arg)=>
{
等等,关上();
svc.SaveCompleted-=SaveCompleted;
};
svc.SaveCompleted+=SaveCompleted;
等等,Show();
SaveAsync();
}
说到这里,我同意@zapico使用工具箱BusyIndicator完成这项任务
public void DoSomething()
{
var wait = new WaitingScreen();
EventHandler<AsyncCompletedEventArgs> saveCompleted = null;
saveCompleted = (s, arg) =>
{
wait.Close();
svc.SaveCompleted -= saveCompleted;
};
svc.SaveCompleted += saveCompleted;
wait.Show();
svc.SaveAsync();
}