程序运行时显示信息消息

时间:2014-11-21 00:15:53

标签: c#

我正在使用C#中的用户界面。当用户点击“开始”按钮时,一个巨大的“for循环”开始工作。此过程需要几分钟。

我希望在forloop之前显示一条消息,并且在forloop之后消息将自动消失。我的目标是向用户提供诸如“正在运行,请稍候”的信息消息。

有没有这样做?

这是循环。它扫描图像并进行一些处理。

for (var i = 0; i <3504 ; i++)
    for (var j = 0; j < 2306; j++)
        {
         ........
        }

2 个答案:

答案 0 :(得分:2)

您没有说出您正在使用的GUI框架,因此我将假设表单。 WPF虽然类似。

当您点击名为&#34; button1&#34;的按钮时,我们假设工作已经开始。创建一个Form子类,它是您的消息(例如,为了#34; MessageWaitForm&#34;而调用)。然后你可以像这样使用它:

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();
    }
}

这会导致您的处理在单独的异步任务中执行,一旦显示消息对话框就开始执行。任务完成后,执行将返回form.Close()语句,允许自动关闭消息表单。

请注意,我必须做一些假设并填写您的代码示例,以便可以提供可用的答案。以上内容可能与您现在的确切实现不符,但希望您能够理解所说明的基本概念并使其符合您的需求。

答案 1 :(得分:0)

也许您的代码看起来像这样?我没有机会编译这个,但它应该足以让你开始。

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;
    });
}