.net讓線程支持超時的方法實例和線程在執(zhí)行結(jié)束后銷毀的方法
.net讓線程支持超時
使用 CancellationTokenSource
private static void TimeoutTest1()
{
var cts = new CancellationTokenSource();
var thread = new Thread(() =>
{
Console.WriteLine(String.Format("線程{0}執(zhí)行中", Thread.CurrentThread.ManagedThreadId));
Thread.Sleep(10000);
Console.WriteLine(String.Format("線程{0}執(zhí)行中", Thread.CurrentThread.ManagedThreadId));
});
cts.Token.Register(() =>
{
thread.Abort();
});
cts.CancelAfter(1000);
thread.Start();
thread.Join();
Console.WriteLine(String.Format("線程{0}的狀態(tài):{1}", thread.ManagedThreadId, thread.ThreadState));
}
這里采用了 Abort 終止了線程,CancellationTokenSource 也支持其它模式,可以去官方看看文檔。
使用 Join
private static void TimeoutTest2()
{
var thread = new Thread(() =>
{
Console.WriteLine(String.Format("線程{0}執(zhí)行中", Thread.CurrentThread.ManagedThreadId));
Thread.Sleep(10000);
Console.WriteLine(String.Format("線程{0}執(zhí)行中", Thread.CurrentThread.ManagedThreadId));
});
thread.Start();
thread.Join(1000);
thread.Abort();
Console.WriteLine(String.Format("線程{0}的狀態(tài):{1}", thread.ManagedThreadId, thread.ThreadState));
}
.net讓線程在執(zhí)行結(jié)束后銷毀
線程執(zhí)行完、遇到未處理異常和被終止后就自動不可用了,如果是垃圾,自然會被 GC 給回收,有一點需要說明的是:線程的未處理異常會導(dǎo)致應(yīng)用程序的終止,一個線程的異常不會自動冒泡到其它線程。
- 設(shè)置ASP.NET頁面的運行超時時間詳細到單個頁面及站點
- 登錄超時給出提示跳到登錄頁面(ajax、導(dǎo)入、導(dǎo)出)
- php設(shè)置頁面超時時間解決方法
- JS實現(xiàn)頁面超時后自動跳轉(zhuǎn)到登陸頁面
- php頁面函數(shù)設(shè)置超時限制的方法
- ajax提交session超時跳轉(zhuǎn)頁面使用全局的方法來處理
- Asp.Net各種超時問題總結(jié)
- Asp中Server.ScriptTimeOut屬性需要注意的一點分析
- 超過了腳本運行的最長時間..Server.ScriptTimeOut 屬性指定新值
- ASP.NET頁面請求超時時間設(shè)置多種方法
相關(guān)文章
asp.net中引用同一個項目中的類庫 避免goToDefinition時不能到達真正的定義類
asp.net中引用同一個項目中的類庫 避免 goToDefinition時不能到達真正的定義類2011-10-10
Asp.net管理信息系統(tǒng)中數(shù)據(jù)統(tǒng)計功能的實現(xiàn)方法
這篇文章主要介紹了Asp.net管理信息系統(tǒng)中數(shù)據(jù)統(tǒng)計功能的實現(xiàn)方法,需要的朋友可以參考下2017-07-07
Asp.Net的FileUpload類實現(xiàn)上傳文件實例
這篇文章主要介紹了Asp.Net的FileUpload類實現(xiàn)上傳文件的方法,以實例形式講述了上傳文件類的具體實現(xiàn)方法,是非常實用的技巧,需要的朋友可以參考下2014-11-11

