gpt4 book ai didi

c# - 循环刷新应用程序窗口

转载 作者:行者123 更新时间:2023-11-30 15:05:58 26 4
gpt4 key购买 nike

我有一个 Windows 窗体应用程序,其中有一个按钮。如果单击它,则会启动一个包含大量工作的大循环,这可能需要一些时间(最多几分钟)。在那个时候,Window 不会对任何东西使用react,你甚至不能移动它。到这里怎么走?有没有我可以调用的窗口更新功能?我必须在新线程中运行循环吗?

最佳答案

使用多线程 - 这是我不久前写的一个例子。您基本上在另一个线程上完成所有处理,因此它不会占用 GUI 线程。

http://wraithnath.blogspot.com/2010/09/simple-multi-threading-example.html

单击按钮时启动一个新线程(如果您将处理线程声明为成员,则可以停止它等如果您想取消进程,您还可以有一个在处理循环中检查的 IsProcessing 成员变量)

            //Create a new Thread start object passing the method to be started
ThreadStart oThreadStart = new ThreadStart(this.DoWork);

//Create a new threat passing the start details
Thread oThread = new Thread(oThreadStart);

//Optionally give the Thread a name
oThread.Name = "Processing Thread";

//Start the thread
oThread.Start();

有处理方法

        /// <summary>
/// Simulate doing work
/// </summary>
private void DoWork()
{
try
{
for (int i = 0; i < m_RecordCount; i++)
{
//Sleep for 100 miliseconds to simulate work
Thread.Sleep(100);

//increment the progress bar by invoking it on the main window thread
progressBar.Invoke(
(MethodInvoker)
delegate
{
//Increment the progress bar
progressBar.Increment(1);
}
);
}

//Join the thread
Thread.CurrentThread.Join(0);
}
catch (Exception)
{
throw;
}
}

关于c# - 循环刷新应用程序窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com