我有一个制作流程的功能。在函数的开头我想更改指示状态的标签文本,一旦过程结束,再次更改它。
事实是只显示了最终的变化。
我知道我可以为这个过程创建一个线程但在这种情况下不需要,我只是想知道是否有一些提示或技巧来完成它而不使用线程。
答案 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);
}
}
}
这种简单的技术可以帮助您将标签的第一次更新与整个过程分开。