我刚才看了上面的程序改了一下,好像就是主线程一退出,异步调用也就自动结束了!! using System.Text; using System.Data; using System.Data.SqlClient; using System.Collections; using System.Threading; using System.IO; using System.Runtime.InteropServices; namespace k { public class kw {
public static void Main(string [] args) { kw objKw = new kw(); Console.WriteLine("begin……"); objKw.smork(); Console.WriteLine("end……"); Thread.Sleep(2000); //如果这里没有这句,程序不会显示异步调用结果
private void button1_Click(object sender, EventArgs e)
{
AsyncCallback mycallback = new AsyncCallback(tellyou);
mydelegate mdg = new mydelegate(move);
mdg.BeginInvoke(mycallback, null);
Application.Exit();
} public void move()
{
for(int i=0;i<5;i++){
MessageBox.Show("异步任务执行");
Thread.Sleep(5);
} } public void tellyou(IAsyncResult result)
{
MessageBox.Show("异步任务完成");
}
WinForm程序异步中断
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using System.Threading;
using System.IO;
using System.Runtime.InteropServices;
namespace k
{
public class kw
{
public static void Main(string [] args)
{
kw objKw = new kw();
Console.WriteLine("begin……");
objKw.smork();
Console.WriteLine("end……");
Thread.Sleep(2000); //如果这里没有这句,程序不会显示异步调用结果
}
delegate void mydelegate();
private void smork()
{
AsyncCallback mycallback = new AsyncCallback(tellyou);
mydelegate mdg = new mydelegate(move);
mdg.BeginInvoke(mycallback, null);
//mdg.EndInvoke(null);
} public void move()
{
for(int i=0;i<5;i++){
Console.WriteLine("异步任务执行");
Thread.Sleep(5);
} } public void tellyou(IAsyncResult result)
{
Console.WriteLine("异步任务完成");
} } }