C# 在程序运行时显示信息消息
我正在用C#开发一个用户界面。当用户单击“开始”按钮时,一个巨大的“for循环”开始工作。这个过程需要几分钟 我希望在forloop之前显示一条消息,在forloop之后消息将自动消失。我的目标是向用户发送一条信息消息,如“正在运行,请稍候” 有什么办法吗 这是循环。它扫描图像并进行一些处理C# 在程序运行时显示信息消息,c#,C#,我正在用C#开发一个用户界面。当用户单击“开始”按钮时,一个巨大的“for循环”开始工作。这个过程需要几分钟 我希望在forloop之前显示一条消息,在forloop之后消息将自动消失。我的目标是向用户发送一条信息消息,如“正在运行,请稍候” 有什么办法吗 这是循环。它扫描图像并进行一些处理 for (var i = 0; i <3504 ; i++) for (var j = 0; j < 2306; j++) { ........
for (var i = 0; i <3504 ; i++)
for (var j = 0; j < 2306; j++)
{
........
}
for(var i=0;i您没有说明您使用的是什么GUI框架,所以我将采用表单。不过WPF将类似
假设当您单击名为“button1”的按钮时,工作开始。创建一个表单
子类作为您的消息(例如,称为“MessageWaitForm”)。然后您可以这样使用它:
private void SomeWork()
{
for (var i = 0; i <3504 ; i++)
for (var j = 0; j < 2306; j++)
{
........
}
}
private void button1_Click(object sender, EventArgs e)
{
using (MessageWaitForm form = new MessageWaitForm())
{
form.Shown += async (sender1, e1) =>
{
await Task.Run(() => SomeWork());
form.Close();
}
form.ShowDialog();
}
}
private void SomeWork()
{
对于(var i=0;i
{
等待任务。运行(()=>SomeWork());
form.Close();
}
form.ShowDialog();
}
}
这将导致处理在单独的异步任务中执行,在显示消息对话框后开始。任务完成后,执行将返回到form.Close()
语句,从而允许自动关闭消息表单
请注意,我必须做出一些假设,并填写一些代码示例,以便提供一个可用的答案。上述内容可能与您目前的具体实现不匹配,但希望您能够理解所演示的基本概念,并使其符合您的需要。也许您的代码看起来像这样?我还没有机会编译这个,但它应该足以让您开始
private void StartBtn_OnClick(object sender, EventArgs e)
{
_isRunning = true;
CodeIsRunning.Visibility = Visibility.Visible;
//Anything else needed (disable buttons, etc)
Task.Factory.StartNew(() => {
for (var i = 0; i < 3504; i++)
for (var j = 0; j < 2306; j++)
{
...
}
_isRunning = false;
});
}
private void StartBtn_OnClick(对象发送方,事件参数e)
{
_isRunning=true;
CodeIsRunning.Visibility=可见性.Visibility;
//还需要什么(禁用按钮等)
Task.Factory.StartNew(()=>{
对于(变量i=0;i<3504;i++)
对于(var j=0;j<2306;j++)
{
...
}
_isRunning=false;
});
}
使用a。希望循环是线程化的?异步任务
与IProgress
可能是BackgroundWorker
的替代方案。