C# 具有异步调用的多播委托
这是我的C# 具有异步调用的多播委托,c#,delegates,multicastdelegate,C#,Delegates,Multicastdelegate,这是我的Main课程代码: DelegateClass dc = new DelegateClass(); MyDelegate mydelegate = new MyDelegate(dc.WriteName); ParameterLess paramless = new ParameterLess(dc.ShowName); IAsyncResult mydelresult = mydelegate.BeginInvoke("Some Data",null,null); var result
Main
课程代码:
DelegateClass dc = new DelegateClass();
MyDelegate mydelegate = new MyDelegate(dc.WriteName);
ParameterLess paramless = new ParameterLess(dc.ShowName);
IAsyncResult mydelresult = mydelegate.BeginInvoke("Some Data",null,null);
var result = mydelegate.EndInvoke(mydelresult);
Console.WriteLine("Name is {0} ", result);
IAsyncResult myparamless = paramless.BeginInvoke(null,null);
result = paramless.EndInvoke(myparamless);
Console.WriteLine("Greeting is {0} ", result);
Console.WriteLine();
Console.ReadLine();
这是我的DelegateClass
:
public string WriteName(string Name)
{
return Name;
}
public string ShowName()
{
return "Hello";
}
public string idea(string idea)
{
return idea;
}
由于
idea
和WriteName
的定义相同,我想通过使用BeginInvoke和EndInvoke使它们成为多播委托。有人能告诉我怎么做吗?有可能吗?您不能使用asyn调用使用多播委托,因为每个asyn调用都在单独的线程上执行,而且您没有第二个线程可以执行的选项。即多播线程。请在发布之前在格式化代码方面多下功夫。在发布之前,只需查看预览,问问自己如果回答问题,是否希望看到代码。此外,你的问题并不十分清楚。只需使用Action-Action=dc.WriteName;行动+=dc.idea代码>异步从何而来?在调用BeginInvoke之后立即调用EndInvoke没有任何意义。只需直接调用,完全相同的结果减去tp线程的成本。