C#获取异步列表错误
见下面编辑的问题 我有以下问题 我收到来自组件的通知事件我无法更改调用:C#获取异步列表错误,c#,asynchronous,async-await,task,C#,Asynchronous,Async Await,Task,见下面编辑的问题 我有以下问题 我收到来自组件的通知事件我无法更改调用: Subject.Save(); 我的代码有一个事件处理程序来捕获组件中触发的通知事件。 事件处理程序已正确注册 我收到的通知包含事件源和SomeEventArgsargs SomeEventArgs为我提供包含所需ID的数据。差不多 private void myEventHandler(object source, SomeEventArgs e) { string path = e.getData().getP
Subject.Save();
我的代码有一个事件处理程序来捕获组件中触发的通知事件。
事件处理程序已正确注册
我收到的通知包含事件源和SomeEventArgs
args
SomeEventArgs
为我提供包含所需ID的数据。差不多
private void myEventHandler(object source, SomeEventArgs e)
{
string path = e.getData().getPath();
...
...
ShowDisplay(); //display shows a form with the path in a grid
}
当我保存一个主题时,我有一个通知,从它的SomeEventArgs
我可以得到
我需要的路径。这样就行了
问题是当我想保存多个主题时。对于每个主题的Save(),myEventHandler
最终将被激发,我将获得如上所示的路径
问题是我不想为每个主题调用ShowDisplay()
,而是同时为所有主题调用。所以,如果我有10个主题,我想先收到10条路径,然后全部显示出来
10以ShowDisplay()打开的单一形式显示。因此,不能从myEventHandler调用ShowDisplay,因为该事件只处理单个主题的通知
我想有一个全局列表,并用每个通知中的路径填充它,但这引入了全局变量,而且我不知道列表何时填充了所有10条路径。这似乎不是一个优雅的想法
编辑的问题
我调用一个异步方法来获取产品名称,如
List<string> productNames = GetProductNamesAsync();
List productNames=GetProductNamesAsync();
我的异步方法如下所示:
public async Task<List<string>> GetProductNamesAsync()
{
return await Task.Run(() => subject.GetList());
}
公共异步任务GetProductNamesAsync()
{
返回等待任务。运行(()=>subject.GetList());
}
这将返回错误
无法将类型
System.Threading.Tasks.Task
隐式转换为System.Collections.Generic.List
List-productNames=GetProductNamesSync()代码>需要是列表productNames=await GetProductNamesAsync()但是,您确实不应该为同步函数制作异步包装器。只执行List products=wait任务要好得多。运行(()=>GetProductNames())代码>该库中某个类型的实例将触发该事件。您需要向该实例注册一个事件处理程序。您的问题不清楚您将如何获得该实例。它在Save()
上触发的事件的名称是什么?假设它是保存的
,您需要在这里执行myObject.Saved+=handler\u name\u
。除非知道事件的详细信息,否则事件处理程序的签名不可能在这里提及。我更新了我的帖子。谢谢你需要更新更多的代码。。myObject
在哪里声明/初始化如果您对事件的了解有限,那么当您应该查找C#MSDN events
进行一些解释和示例阅读时,为什么还要在这里浪费时间..在研究bit之后,我找到了其他方法来做我需要做的事情,但我遇到了另一个问题。我修改了我的问题,以反映我现在面临的问题。感谢所有回应的人。