c#异步委托的问题

异步委托与同步委托(一般的委托)区别在哪里?一般的委托就可以理解为通过函数指针跳转执行另外一段代码,然后执行剩下的代码?异步委托是否启用了新的线程去执行另外一段代码?如果... 异步委托与同步委托(一般的委托)区别在哪里?
一般的委托就可以理解为通过函数指针跳转执行另外一段代码,然后执行剩下的代码?
异步委托是否启用了新的线程去执行另外一段代码?
如果不是,这个异步是怎么实现的?
如果是,有一个问题难以理解。
在主界面线程中启用一个异步委托更新主界面的进度条控件时,主界面会停止响应,除非显示处理消息,这不应该是启用两个线程之后应该发生的结果啊?
希望高手解答!
我重点想知道的是,异步委托是否启用了新的线程去执行代码,如果不是,它和同步委托就没有差别啊?如果是,为设么会出现上面那个难以理解的问题。
展开
 我来答
鱼米草欲钩f
2011-07-02 · TA获得超过3050个赞
知道大有可为答主
回答量:4627
采纳率:55%
帮助的人:892万
展开全部
1.是多线程,不算异步。
2.BeginAccept是异步,虽然你的程序中用myreset.WaitOne();进入了等待事件的过程。如果不等待事件,就可以继续运行下面的程序了。
我的经验是,这种情况就不用异步。
3.回调当然会消耗系统资源。大数据的话,我建议用线程循环做。
4.同步就会阻塞,异步主线程不阻塞,当需要监听后,还需要做一些其他处理的话,就用异步,如果一切就绪等待连接的,就用同步比较好。
5.委托给了.net框架,内部应该也是线程和阻塞。
路过,不足之处,请继续问。
百度网友b68d4ea4f
2011-06-30 · TA获得超过126个赞
知道小有建树答主
回答量:182
采纳率:100%
帮助的人:139万
展开全部
你这样当然主界面停止响应了,你使用异步委托去操作主界面的进度条,实际上和在主界面操作一样。换个方式,用backgroundwork控件去做,
BackgroundWorker bgWork = new BackgroundWorker();
bgWork.DoWork += new DoWorkEventHandler(DoWork);
bgWork.RunWorkerCompleted += new RunWorkerCompletedEventHandler(RunCompleted);
bgWork.ProgressChanged += new ProgressChangedEventHandler(ProgressChanged);
bgWork.WorkerReportsProgress = true;
bgWork.RunWorkerAsync(opType);

/// <summary>
/// 背景线程状态报告事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBarControl1.Text = e.ProgressPercentage.ToString();
}
这样就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JINYUTTT
2011-06-30 · TA获得超过178个赞
知道小有建树答主
回答量:792
采纳率:0%
帮助的人:553万
展开全部
嗯,就是那个意思。委托执行结果是否需要立即返回的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式