C# 从C中的操作回调中检索值
我正在尝试使用回调机制从异步方法检索返回值,如下所示:C# 从C中的操作回调中检索值,c#,callback,delegates,C#,Callback,Delegates,我正在尝试使用回调机制从异步方法检索返回值,如下所示: public async void GetArea(double latitude, double longitude, Action<String> callback){ String area = ""; //code callback(area); } 我就是这样称呼这个方法的: GetArea(Position.latitude, Position.longitude, new Action&l
public async void GetArea(double latitude, double longitude, Action<String> callback){
String area = "";
//code
callback(area);
}
我就是这样称呼这个方法的:
GetArea(Position.latitude, Position.longitude, new Action<string>(delegate {
//how do I retrieve the callback return value here?
}));
如何从委托检索返回值?而不是
new Action<string>(delegate { ... })
然后该值将作为s可用。但首先,这是一种奇怪的模式。不要考虑异步空缺,考虑异步任务,不要使用回调,然后使用等待GETAZE…直接得到结果。这假设您在GetArea中确实在做一些需要异步的事情。中有一个很好的例子 首先,不要使用异步void。第二,委托返回的值是什么?回调被声明为Action,这意味着返回类型为void。没有返回值。这就是空虚的意思。什么意思?
s => { ... }
using System;
using System.Windows.Forms;
public class TestLambdaExpression
{
public static void Main()
{
Action<string> messageTarget;
if (Environment.GetCommandLineArgs().Length > 1)
messageTarget = s => ShowWindowsMessage(s);
else
messageTarget = s => Console.WriteLine(s);
messageTarget("Hello, World!");
}
private static void ShowWindowsMessage(string message)
{
MessageBox.Show(message);
}
}