处理时更改标签内容

时间:2017-06-10 16:27:17

标签: c#

我有一个制作流程的功能。在函数的开头我想更改指示状态的标签文本,一旦过程结束,再次更改它。

事实是只显示了最终的变化。

我知道我可以为这个过程创建一个线程但在这种情况下不需要,我只是想知道是否有一些提示或技巧来完成它而不使用线程。

1 个答案:

答案 0 :(得分:-1)

在这种情况下,当您在UI中更改某些内容时,它不会更改,直到整个过程完成,因为您说您只能看到标签的最终状态。诀窍很简单。您需要在第一次更新标签时使用辅助线程。 请看下面的例子:

 class Program
    {
        private delegate void del();
        static void Main(string[] args)
        {
            del d = updateConsole;
            var res = d.BeginInvoke(null, null);
            while (!res.IsCompleted)
            {
                // do the job here
            }
            d.EndInvoke(res);
            Thread.Sleep(1000);
            Console.Clear();
            Console.WriteLine("Done!");
            Console.Read();
        }

        private static void updateConsole()
        {
            for (var i = 0; i <= 10; i++)
            {
                Thread.Sleep(500);
                Console.Clear();
                Console.WriteLine(i);
            }

        }
    }

这种简单的技术可以帮助您将标签的第一次更新与整个过程分开。