gpt4 book ai didi

c# - Visual Studio 函数未按顺序完成操作

转载 作者:行者123 更新时间:2023-11-30 20:02:12 26 4
gpt4 key购买 nike

我有一个功能似乎没有按照预期的顺序工作。顺便说一下,这一切都是在 Visual Studio 中用 C# 实现的。

这里我们有一个被点击的按钮(第 4 步),应该发生的是按钮应该变成红色并显示文本“请稍候...”,直到进程加载,然后它会变成绿色并显示程序名称.但是,它只是加载程序并保持默认灰色和默认文本,直到进程加载,然后直接更改为绿色和程序名称。出于某种原因,它跳过了红色的请稍候文本部分。这是代码:

    private void Step4_Click(object sender, EventArgs e)
{
Step4.BackColor = Color.DarkRed;
Step4.Text = "Please Wait...";
string strMobileStation = "C:\\MWM\\MobileStation\\Station.exe";
Process MobileStation = Process.Start(strMobileStation);
MobileStation.WaitForInputIdle();
Step4.BackColor = Color.Lime;
Step4.Text = "Mobile Station";
}

最佳答案

问题是您在用户界面线程上执行此操作。

当您在 UI 线程上执行此操作时,您会阻塞 UI 线程,这反过来意味着用户界面无法处理消息。方法完成后,将处理消息并显示最终结果。

处理此问题的正确方法是将“工作”(等待进程)移至后台线程。

您可以通过 Task 类来完成此操作,即:

private void Step4_Click(object sender, EventArgs e)
{
Step4.BackColor = Color.DarkRed;
Step4.Text = "Please Wait...";

Task.Factory.StartNew( () =>
{
string strMobileStation = "C:\\MWM\\MobileStation\\Station.exe";
Process MobileStation = Process.Start(strMobileStation);
MobileStation.WaitForInputIdle();
})
.ContinueWith(t =>
{
Step4.BackColor = Color.Lime;
Step4.Text = "Mobile Station";
}, TaskScheduler.FromCurrentSynchronizationContext());
}

关于c# - Visual Studio 函数未按顺序完成操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17094815/

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