问一个也许很弱的问题,关于异步回调的
我想用同步的方式操作异步方法 .我能在一个函数中调用 异步方法,并且能在这个函数中得到这个异步方法执行的结果. 这样有没有可能实现?
比如 以下的伪代码
public int Callback()
{
return 1;
}
public void s()
{
//调用异步方法
int i= new AsyncCallback(Callback);
// i 就是 Callback 返回的值 1;
}
------解决方案--------------------1 加全局变量标志完成未完成,调用方用循环DoEvents 判断标志等待回调完成
2 用ManualResetEvent WaitOne阻塞调用方,回调完成后ManualResetEvent Set
------解决方案--------------------学习中...这个是个头疼的问题i
------解决方案--------------------
namespace AsyncTest
{
class Program
{
public delegate int AsyncDelegate();
static void Main(string[] args)
{
AsyncDelegate async = ()=>{return 1;};
async.BeginInvoke(
(
ia=>{
int i = ((AsyncDelegate)ia.AsyncState).EndInvoke(ia);
Console.WriteLine(i);
}
)
,async
);
Console.Read();
}
}
}
代码写得比较简单,能看懂吗?
------解决方案--------------------不知楼主什么意思。如果你的Callback无须依赖异步执行方式,你直接这样就是了:
public void s()
{
//同步调用方法
………………
//同步调用完成后,调用原本异步执行完成所需要调用的方法
int i= Callback;
}
但假如你的调用根本不能转变成同步调用方式,那就必须使用异步调用的方法。
------解决方案--------------------这取决于你业务数据的实际处理流程,不是你主观想同想异的事情。业务确定了,该同就同,该异就异。
------解决方案--------------------或许可参考