C# C:根据背景任务定期更新GUI

C# C:根据背景任务定期更新GUI,c#,html,multithreading,C#,Html,Multithreading,我有一个GUI,无论出于何种目的,它都是非常基本的。一个列表视图,一个html表单,就是这样 我希望用户具备以下行为能力: 1-单击显示实时的复选框。单击时,后台线程将每10秒运行一次 2-如果创建了一个新文件,这很容易,要观察一个新文件,我希望在我的主gui中显示一个警报。例如,它现在在标签中的显示位置是任意的 主要的问题是,我无法在多线程示例中理解如何做到这一点。我的目标与多线程完全一致:执行任务1和任务2,而不锁定任务1。这意味着,当更新检查运行时,用户可以与GUI交互,就好像在后台什么也

我有一个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();
        }
    }