C# C:根据背景任务定期更新GUI
我有一个GUI,无论出于何种目的,它都是非常基本的。一个列表视图,一个html表单,就是这样 我希望用户具备以下行为能力: 1-单击显示实时的复选框。单击时,后台线程将每10秒运行一次 2-如果创建了一个新文件,这很容易,要观察一个新文件,我希望在我的主gui中显示一个警报。例如,它现在在标签中的显示位置是任意的 主要的问题是,我无法在多线程示例中理解如何做到这一点。我的目标与多线程完全一致:执行任务1和任务2,而不锁定任务1。这意味着,当更新检查运行时,用户可以与GUI交互,就好像在后台什么也没有发生一样 如果你需要更多的细节来更好地回答这个问题,请让我知道C# C:根据背景任务定期更新GUI,c#,html,multithreading,C#,Html,Multithreading,我有一个GUI,无论出于何种目的,它都是非常基本的。一个列表视图,一个html表单,就是这样 我希望用户具备以下行为能力: 1-单击显示实时的复选框。单击时,后台线程将每10秒运行一次 2-如果创建了一个新文件,这很容易,要观察一个新文件,我希望在我的主gui中显示一个警报。例如,它现在在标签中的显示位置是任意的 主要的问题是,我无法在多线程示例中理解如何做到这一点。我的目标与多线程完全一致:执行任务1和任务2,而不锁定任务1。这意味着,当更新检查运行时,用户可以与GUI交互,就好像在后台什么也
谢谢 使用线程中的事件通知UI某些内容已更改:
// Just detected that that a new file has been created
if (this.FileCreated_Event != null)
{
this.FileCreate_Event(this, new FileEventArgs(newFileName));
}
其中FileCreated\u事件和FileEventArgs被适当地声明
然后,在用户界面中,当您收到事件时,您会看到以下内容:
this.fileChecker.FileCreated_Event += this.FileCreated_Event;
以及:
其中,操作是您想要做的事情。尝试教程。最后,我相信您将能够使用线程。不过,您必须小心,因为您必须管理这些线程,这可能是一项艰巨的任务。我从未见过一个程序员喜欢调试多个线程…当我需要执行数据库操作时,我发现以下几个站点对于实现后台工作程序非常有用,同时仍然允许GUI响应:
我已经添加了HTML,如果是这样的话,请用ASP.NET替换。@AustinSalonen-对此很抱歉-我在完成之前按enter键并发布了答案。但是如果UI是ASP.NET呢?从这个问题上看似乎不清楚。@HenkHolterman-这将使UI的结尾有所不同,但不确定如何结束,因为我没有这样做。
private void FileCreated_Event(object sender, TrackStatusEventArgs e)
{
if ((sender as Control).InvokeRequired)
{
(sender as Control).Invoke(action);
}
else
{
action();
}
}