惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
The Last Watchdog
The Last Watchdog
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
V
Vulnerabilities – Threatpost
F
Fortinet All Blogs
Microsoft Security Blog
Microsoft Security Blog
A
Arctic Wolf
云风的 BLOG
云风的 BLOG
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
MyScale Blog
MyScale Blog
B
Blog
Spread Privacy
Spread Privacy
S
Schneier on Security
Project Zero
Project Zero
L
LINUX DO - 热门话题
M
MIT News - Artificial intelligence
F
Full Disclosure
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
Cyberwarzone
Cyberwarzone
AWS News Blog
AWS News Blog
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
C
Cybersecurity and Infrastructure Security Agency CISA
Hugging Face - Blog
Hugging Face - Blog
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tailwind CSS Blog
K
Kaspersky official blog
Recent Announcements
Recent Announcements
NISL@THU
NISL@THU
Cisco Talos Blog
Cisco Talos Blog
S
Securelist
P
Privacy & Cybersecurity Law Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
The Exploit Database - CXSecurity.com
V
Visual Studio Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Webroot Blog
Webroot Blog

博客园 - 谢小漫

弹出选择窗体控件(附源码) 获取枚举描述信息(Description)2 - 谢小漫 - 博客园 mshtml组件引用的问题 导出所有用户表到excel Sql Server数据导出EXCEL C#的串口编程 DataReceived XML-RPC.NET的X509Certificates如何使用呢 XML-RPC.NET 在读《C#和.NET 2.0实战》 如何在ASP.NET中做异步 C#的串口编程 重新开始学习.net 在看Test-Driven Development In Microsoft .NET 最近了解过的一个支付接口 网站的第三天 BAIDU的第一个搜索访问进入网站 不错的日期选择 星期六提交sitemap 关于代码自动生成器
如何在winform中用委托做异步
谢小漫 · 2008-12-09 · via 博客园 - 谢小漫

不好意思,直接上代码了。

Code
delegate void VoidDelegate ();
VoidDelegate vd 
= DataBind;
vd.EndInvoke(vd.BeginInvoke(
nullnull));


所以delegate(委托)的基本东西还是要会的。有返回时候的后续操作的版本是:

Code
delegate DataView DataViewDelegate();private void button1_Click(object sender, EventArgs e)
{
DataViewDelegate dvd 
= new DataViewDelegate(DataLoad);
dvd.BeginInvoke(DataBind, dvd);
}
private DataView DataLoad()
{            
SqlConnection conn 
= new SqlConnection(@"Data Source=cat\sqlexpress;Initial Catalog=Northwind;Integrated Security=True");
SqlDataAdapter ada 
= new SqlDataAdapter("select * from orders ;waitfor delay '00:00:5';", conn);
DataTable dt 
= new DataTable();

conn.Open();
ada.Fill(dt);
conn.Close();

DataView dv 

= new DataView(dt);              
return dv;
 }
private void DataBind(IAsyncResult ar)
        {
            
if (ar == nullthrow new ArgumentNullException("ar");
            DataViewDelegate dvd1 
= ar.AsyncState as DataViewDelegate;
            System.Diagnostics.Trace.Assert(dvd1 
!= null"Invalid object type ");

            DataView dv 

= dvd1.EndInvoke(ar);
          
            VoidDelegate vd 
= delegate()
            {
                dataGridView1.DataSource 
= dv;
                
this.dataGridView1.Enabled = true;
                
this.progressBar1.Visible = false;
                
this.button1.Enabled = true;
            };
            dataGridView1.Invoke(vd);
//由主线程上的控件来invoke委托
            
        }

委托就是用线程来做异步的(个人看法,还没有从书本或网络中了解到)。
关于异步,下一篇是ASP.NET中做异步的例子,比起网络中现有例子更生动的几个做法。