首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

问一个也许很弱的有关问题,关于异步回调的

2013-02-19 
问一个也许很弱的问题,关于异步回调的我想用同步的方式操作异步方法 .我能在一个函数中调用 异步方法,并且

问一个也许很弱的问题,关于异步回调的
我想用同步的方式操作异步方法 .我能在一个函数中调用 异步方法,并且能在这个函数中得到这个异步方法执行的结果. 这样有没有可能实现?

比如 以下的伪代码
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;
}
但假如你的调用根本不能转变成同步调用方式,那就必须使用异步调用的方法。
[解决办法]
这取决于你业务数据的实际处理流程,不是你主观想同想异的事情。业务确定了,该同就同,该异就异。
[解决办法]
或许可参考

热点排行