Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight ChildWindow在回调时未正确关闭_C#_Silverlight_Childwindow - Fatal编程技术网

C# Silverlight ChildWindow在回调时未正确关闭

C# Silverlight ChildWindow在回调时未正确关闭,c#,silverlight,childwindow,C#,Silverlight,Childwindow,我有一个简单的ChildWindow,它只包含两个元素,textblock和一个进度条来模拟等待屏幕。该子窗口在调用异步WCF方法之前启动,并在回调时关闭 问题是第二次关闭ChildWindow时,整个曲面将保持禁用状态。我搜索过类似的情况,其中一个提到Close方法被调用了两次,这不是我的情况 以下是一些示例代码(svc是WCF服务): 任何一个指针都会被感激的,我想我这里缺少了一些基本的东西。要在等待异步调用时显示窗口,我将使用来自的“BusyIndicator” 无论如何,如果Waitin

我有一个简单的ChildWindow,它只包含两个元素,textblock和一个进度条来模拟等待屏幕。该子窗口在调用异步WCF方法之前启动,并在回调时关闭

问题是第二次关闭ChildWindow时,整个曲面将保持禁用状态。我搜索过类似的情况,其中一个提到Close方法被调用了两次,这不是我的情况

以下是一些示例代码(svc是WCF服务):


任何一个指针都会被感激的,我想我这里缺少了一些基本的东西。

要在等待异步调用时显示窗口,我将使用来自的“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();
}