在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