<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head id="Head"><title>C#异步编程 - EricWen - 博客园</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta id="metaKeywords" name="keywords" content="C#异步编程"><link id="CommondCss" type="text/css" rel="stylesheet" href="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/common.css"><link id="MainCss" type="text/css" rel="stylesheet" href="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/style.css"><link id="RSSLink" title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cnblogs.com/ericwen/rss.aspx">
<script src="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/common.js" type="text/javascript"></script><link id="bluelink-window.css" type="text/css" rel="stylesheet" href="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/bluelink-window.css">
<style>
td { font-size: 12px }
.commentTextBox
{
font-family : Verdana;
font-size: 13px;
}
a.blue:visited,
a.blue:active,
a.blue:link,
a.blue:hover
{
color:blue;
}
</style><style>.userData { BEHAVIOR: url(#default#userdata) }
</style></head><body>
<form name="Form1" method="post" action="1101801.html" onsubmit="javascript:return WebForm_OnSubmit();" id="Form1">
<div>
<input name="__EVENTTARGET" id="__EVENTTARGET" value="" type="hidden">
<input name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" type="hidden">
<input name="__VIEWSTATE" id="__VIEWSTATE" value="" type="hidden">
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {
theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/WebResource.js" type="text/javascript"></script>
<script language="JavaScript">
function ctlent(evt,id)
{
if(evt.ctrlKey && evt.keyCode == 13)
{
try
{
TempSave(id);
}
catch(ex)
{
}
finally
{
__doPostBack('AjaxHolder$PostComment$btnSubmit','')
}
}
}</script>
<script language="JavaScript">function SetReplyAuhor(author){document.getElementById('AjaxHolder_PostComment_tbComment').value+="@"+author+"\n";document.getElementById('AjaxHolder_PostComment_tbComment').focus();return false}</script>
<script src="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/ScriptResource_002.js" type="text/javascript"></script>
<script src="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/ScriptResource_003.js" type="text/javascript"></script>
<script src="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/ScriptResource.js" type="text/javascript"></script>
<script src="%E5%BC%82%E6%AD%A5%E4%BE%8B%E5%AD%90_files/js.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
//]]>
</script>
<span style="color: rgb(255, 255, 255);" onclick="alert('今天身体力行了吗?')">2008 身体力行</span>
<div id="top">
<h1><a id="Header1_HeaderTitle" class="headermaintitle" href="http://www.cnblogs.com/ericwen/">EricWen</a></h1>
<p id="tagline">淡薄以明智,宁静以致远</p>
</div>
<div id="main">
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
</script>
<div class="post">
<h2>
<a id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/ericwen/archive/2008/03/12/1101801.html">C#异步编程</a>
</h2>
<h3 _extended="true" align="left"> </h3>
<h5 _extended="true">同步方法和异步方法的区别</h5>
<p _extended="true"><font _extended="true" face="宋体">同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果<br _extended="true">
异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作</font></p>
<h5 _extended="true">异步编程概览</h5>
<p _extended="true"><font _extended="true" face="宋体">.NET Framework 允许您异步调用任何方法。定义与您需要调用的方法具有相同签名的委托;公共语言运行库将自动为该委托定义具有适当签名</font></p>
<p _extended="true"><font _extended="true" face="宋体">的 BeginInvoke 和 EndInvoke 方法。</font></p>
<p _extended="true"><font _extended="true" face="宋体">BeginInvoke 方法用于启动异步调用。它与您需要异步执行的方法具有相同的参数,只不过还有两个额外的参数(将在稍后描述)。</font></p>
<p _extended="true"><font _extended="true" face="宋体">BeginInvoke 立即返回,不等待异步调用完成。<br _extended="true">
BeginInvoke 返回 IasyncResult,可用于监视调用进度。</font></p>
<p _extended="true"><font _extended="true" face="宋体">EndInvoke 方法用于检索异步调用结果。调用 BeginInvoke 后可随时调用 EndInvoke 方法;如果异步调用未完成,EndInvoke 将一直阻塞到</font></p>
<p _extended="true"><font _extended="true" face="宋体">异步调用完成。EndInvoke 的参数包括您需要异步执行的方法的 out 和 ref 参数(在 Visual Basic 中为 <Out> ByRef 和 ByRef)以及由</font></p>
<p _extended="true"><font _extended="true" face="宋体">BeginInvoke 返回的 IAsyncResult。</font></p>
<p _extended="true"><font _extended="true" face="宋体">四种使用 BeginInvoke 和 EndInvoke 进行异步调用的常用方法。调用了 BeginInvoke 后,可以:</font></p>
<p _extended="true"><font _extended="true" face="宋体">1.进行某些操作,然后调用 EndInvoke 一直阻塞到调用完成。<br _extended="true">
2.使用 IAsyncResult.AsyncWaitHandle 获取 WaitHandle,使用它的 WaitOne 方法将执行一直阻塞到发出 WaitHandle 信号,然后调用</font></p>
<p _extended="true"><font _extended="true" face="宋体">EndInvoke。这里主要是主程序等待异步方法,等待异步方法的结果。<br _extended="true">
3.轮询由 BeginInvoke 返回的 IAsyncResult,IAsyncResult.IsCompeted确定异步调用何时完成,然后调用 EndInvoke。此处理个人认为与<br _extended="true">
相同。<br _extended="true">
4.将用于回调方法的委托传递给 BeginInvoke。该方法在异步调用完成后在 ThreadPool 线程上执行,它可以调用 EndInvoke。这是在强制装</font></p>
<p _extended="true"><font _extended="true" face="宋体">换回调函数里面IAsyncResult.AsyncState(BeginInvoke方法的最后一个参数)成委托,然后用委托执行EndInvoke。<br _extended="true">
警告 始终在异步调用完成后调用 EndInvoke。</font></p>
<p _extended="true"><font _extended="true" face="宋体">以上有不理解的稍后可以再理解。</font></p>
<p _extended="true"> </p>
<h5 _extended="true">例子</h5>
<p _extended="true">1)先来个简单的没有回调函数的异步方法例子</p>
<p _extended="true">请再运行程序的时候,仔细看注释,对理解很有帮助。还有,若将注释的中的两个方法都同步,你会发现异步<font _extended="true" face="宋体">运行的速度优越性。</font></p>
<p _extended="true"> </p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; backgroun
没有合适的资源?快使用搜索试试~ 我知道了~
C#异步调用资料整理
共47个文件
js:17个
gif:12个
css:5个
4星 · 超过85%的资源 需积分: 0 6 下载量 163 浏览量
2008-06-20
16:12:43
上传
评论 1
收藏 147KB RAR 举报
温馨提示
C#异步调用资料整理
资源推荐
资源详情
资源评论
收起资源包目录
c#异步调用资料搜集.rar (47个子文件)
异步例子.html 122KB
异步例子_files
1101801.jpg 631B
alimamal.htm 80B
ExpandedBlockStart.gif 79B
ExpandedBlockEnd.gif 68B
ExpandedSubBlockEnd.gif 71B
dot.gif 59B
js.js 3KB
InBlock.gif 70B
ShowHidden.js 3KB
None.gif 59B
inf.js 21KB
ContractedSubBlock.gif 85B
common.js 609B
xml.gif 404B
ExpandedSubBlockStart.gif 83B
ads.htm 10KB
ads_data
abg-zh-CN-100c-ffffff.png 1KB
graphics.js 4KB
ContractedBlock.gif 80B
WebResource.js 20KB
common.css 1KB
ScriptResource_003.js 82KB
alimama.htm 22KB
style.css 4KB
ScriptResource.js 29KB
bluelink-window.css 3KB
ScriptResource_002.js 21KB
JpegImage.jpg 2KB
show_ads.js 22KB
异步调用_files
35396.jpg 631B
ad.htm 236B
ShowHidden.js 3KB
BlueTabRight.gif 1KB
xml.gif 404B
ads.htm 10KB
ads_data
abg-zh-CN-100c-ffffff.png 1KB
graphics.js 4KB
WebResource.js 20KB
ScriptResource_003.js 29KB
style.css 8KB
ScriptResource.js 21KB
bluelink-window.css 3KB
ad_data
ScriptResource_002.js 82KB
JpegImage.jpg 2KB
show_ads.js 22KB
异步调用.html 53KB
共 47 条
- 1
资源评论
- jasmine03132014-02-22不错,有用
80817
- 粉丝: 4
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功