.NET 非同步作業

那天看到phoenix大大的

ASP.NET C# 非同步程序(多執行緒)寄送郵件 (適合大量郵件)

覺得很好玩

所以我也來簡化code試玩一下

那天看到phoenix大大的

ASP.NET C# 非同步程序(多執行緒)寄送郵件 (適合大量郵件)

覺得很好玩

所以我也來簡化code試玩一下


    public partial class Form1 : Form {
        public delegate void AsynDosothing();
        public Form1() {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e) {
            AsynDosothing ad = new AsynDosothing(writeToFile);
            AsyncCallback asc = new AsyncCallback(sothingCallBack);
            IAsyncResult iar = ad.BeginInvoke(asc, ad);
            MessageBox.Show("begin asyn");
        }

        protected void writeToFile() {
            for (int i = 0; i < 20; i++) {
                System.Threading.Thread.Sleep(1000);
                File.AppendAllText(@"D:\test.txt", DateTime.Now.ToString());
            }
        }

        protected void sothingCallBack(IAsyncResult iar) {
            if (iar.IsCompleted) {
                MessageBox.Show("OK");
            }
        }

        private void button2_Click(object sender, EventArgs e) {
            writeToFile();
            MessageBox.Show("OK");
        }
    }

寫一段很小很短的code來測試效果

在winform上面

buttin1按下去會另外跑一個Thread所以不會鎖死不能動

button2按下去就要等20秒了

程式關掉後就馬上停止,並不會繼續跑下去

在webform上就算程式關掉還是會繼續跑下去

我想可能是在webform上跑是用iis的thread再跑

webform關掉並不會把iis的thread關掉所以會繼續跑吧…