﻿# 設定「排定的工作」需注意工作執行的時間

我之前寫過一篇【[排定的工作設定週期最短只有每日嗎？](/post/2008/02/15/Schedule-tasks-to-run-more-frequently-than-once-per-day)】文章，當時我們就是寫了一支需要「每分鐘」執行一次的程式，執行了一年多沒啥問題出現過，但最近卻出問題了，程式竟然自動停止執行，導致服務無法正常運作，研究後才發現原來該程式從早上執行完後到現在一直在執行，沒有停止過，所以才導致排程的工作就此停擺。

今天經研究後發現，原來是我們的程式在建立 TCP/IP 連線時，遠端電腦可能當時發生了些異常行為，導致連上後沒有任何回應，以致於我們的程式就一直在等待伺服器回應，一直等...一直等...  = =''

發現問題的根源後，立即想到有三種解決方法：

1\. 利用 **Windows 工作管理員** 手動將執行中的程式殺掉，接著排程就會繼續進行了!

2\. 修改程式碼，加入 Timeout 功能。我直接利用前幾天介紹的**執行緒**幫我完成這個目的：

```csharp
static void Main(string[] args)
{
	Thread t = new Thread(new ThreadStart(DoWorks));
	t.Start();
	t.Join(1000 * 60 * 5);
}
```

3\. 修改 **排定的工作** 中的設定，設定 5 分鐘後停止排定的工作 ( 這也是最簡單的方式 )

![改 排定的工作 中的設定，設定 5 分鐘後停止排定的工作](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/f08a0c6ad9966a217889-image_3.png)
