Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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#事件处理程序不响应此事件?_C#_Wpf_Silverlight_Events_Event Handling - Fatal编程技术网

为什么此C#事件处理程序不响应此事件?

为什么此C#事件处理程序不响应此事件?,c#,wpf,silverlight,events,event-handling,C#,Wpf,Silverlight,Events,Event Handling,下面的代码是一个silverlight应用程序,但在WPF中也会发生同样的情况,因此,关于委托、事件等,我似乎遗漏了一些东西 有人能告诉我为什么以下代码成功执行此事件: OnLoadingComplete(this, null); 但从不执行此事件处理程序? void initialDataLoader_OnLoadingComplete(object obj, DataLoaderArgs args) 代码: 使用系统; 使用System.Collections.Generic; 使用Sy

下面的代码是一个silverlight应用程序,但在WPF中也会发生同样的情况,因此,关于委托、事件等,我似乎遗漏了一些东西

有人能告诉我为什么以下代码成功执行此事件:

OnLoadingComplete(this, null);
但从不执行此事件处理程序?

void initialDataLoader_OnLoadingComplete(object obj, DataLoaderArgs args)
代码:

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Windows.Controls;
使用系统诊断;
命名空间TestEvent22928
{
公共部分类主页面:UserControl
{
公共主页()
{
初始化组件();
DataLoader initialDataLoader=新的DataLoader(“初始”);
initialDataLoader.RegisterText(“test1”http://test:111/testdata/test1.txt");
initialDataLoader.RegisterText(“test2”http://test:111/testdata/test2.txt");
initialDataLoader.BeginLoading();
initialDataLoader.OnLoadingComplete+=新的DataLoader.LoadingComplete(initialDataLoader\u OnLoadingComplete);
}
void initialDataLoader\u OnLoadingComplete(对象对象对象,DataLoaderArgs参数)
{
Debug.WriteLine(“加载完成”);//为什么执行从未到达这里?
}
}
公共类数据管理器
{
公共数据加载器CreateDataloader(字符串dataloaderIdCode)
{
DataLoader DataLoader=新的DataLoader(dataloaderIdCode);
返回数据加载器;
}
}
公共类数据加载器
{
公共字符串IdCode{get;set;}
公共列表数据项{get;set;}
公共委托无效加载完成(对象obj、DataLoaderArgs args);
公共事件LoadingComplete OnLoadingComplete=委托{};
私有int-dataItemCurrentlyLoadingIndex;
公共数据加载器(字符串idCode)
{
IdCode=IdCode;
DataItems=新列表();
dataItemCurrentlyLoadingIndex=-1;
}
public void RegisterText(字符串idCode、字符串absoluteSourceUrl)
{
DataItem DataItem=新的DataItem
{
IdCode=IdCode,
AbsoluteSourceUrl=AbsoluteSourceUrl,
种类=DataItemKind.Text
};
DataItems.Add(dataItem);
}
公共void开始加载()
{
LoadNext();
}
私有void LoadNext()
{
dataItemCurrentlyLoadingIndex++;
if(dataItemCurrentlyLoadingIndex
仅在开始加载后才注册处理程序:

        initialDataLoader.BeginLoading();
        initialDataLoader.OnLoadingComplete += new DataLoader.LoadingComplete(initialDataLoader_OnLoadingComplete);


当前编写代码的方式看起来像是BeginLoading()会一直阻塞到完成,这意味着永远不会调用处理程序,因为在完成加载后才对其进行设置。

是否在调试模式下编译?是的,通过使用调试器,我发现它永远不会到达事件处理程序
        initialDataLoader.BeginLoading();
        initialDataLoader.OnLoadingComplete += new DataLoader.LoadingComplete(initialDataLoader_OnLoadingComplete);