在c#中,我正在使用Windows窗體應用程序工作我的眼動跟蹤項目。對於眼動追蹤過程,到目前爲止,我已經創建了所有需要的東西 - 包括創建眼動追蹤數據的熱圖(heatmap) - 並且我現在正在處理我的界面。如何在幾秒鐘後結束線程
在我的主窗體上,有4個按鈕「啓動流」,它啓動程序,它採用眼睛的座標並將數據添加到數據庫中。 「停止流」結束前一個過程。 「清除數據庫」清除數據庫中的所有內容。和「創建熱圖」,它對數據進行一些操作以創建熱圖。
現在我想改變一些東西。通過點擊開始按鈕,程序會在全屏上打開一個帶有圖片框的新表單,用戶會注視打開的圖片。但是,由於不可能在觀看全屏時停止流,所以我想讓流程在停止之後停下來,比如說10秒。
我開始流代碼:
flag = true;
StreamOnPictureForm newStreamForm = new StreamOnPictureForm();
newStreamForm.Show();
//這種形式只是一種基本形式,在中心一個PictureBox。
Stream.resetEvent = new ManualResetEvent(false);
Thread thread = new Thread(Stream.GazeStream);
thread.Start();
//這是我閱讀眼球運動的主要方法,並將它們添加到數據庫中。
該標誌用於理解程序正在運行。
而且我停止的過程與我「停止流」按鈕:
if (flag == true)
{
Stream.resetEvent.Set();
}
flag = false;
現在我想的是,沒有任何點擊按鈕來停止流。當我嘗試計算時間,然後用這樣的代碼停止流:該時間量後,屏幕上顯示了
DateTime startTime = DateTime.Now;
TimeSpan byNow;
bool isActive = true;
int x;
while (isActive == true)
{
byNow = DateTime.Now.Subtract(startTime);
x = (int)byNow.TotalSeconds;
if (x > 5) { isActive = false; }
}
Stream.resetEvent.Set();
它開始增加,持續5秒的數據做DB,但我的圖片,當圖片最終顯示在屏幕上時,程序不再從用戶的眼睛獲取數據,這不是我想要做的。
我該如何結束我的線程(停止在幾秒鐘後添加數據&並關閉圖片)?有人可以幫我嗎?
'Thread thread = new Thread'這是遺留代碼。你不應該在.NET的現代版本中這樣做。看看「任務」類。 – user3185569