我想创建一个简单的加载栏。所以我在表单上放了两个PictureBox。一个用于覆盖整个表单,一个用于显示居中的加载旋转(具有Image属性)。
我想在加载程序时使用此加载栏(以及运行某些繁重的任务时)。
但是在加载表单时没有显示加载旋转。顺便说一下,整个表格在装载过程中是空的。
我该如何解决?如果我能......
我没有代码,但下面有一个示例:
private void Form1_Shown(object sender, EventArgs e)
{
Thread.Sleep(3000); //some heavy task
}
答案 0 :(得分:5)
在事件处理程序中放置Thread.Sleep
(或任何长时间运行的代码)将阻止UI,直到该事件处理程序运行完其代码为止。
您必须将此类代码放在BackgroundWorker
,Thread
或Task
中,并异步运行该代码。通过这种方式,代码可以独立于UI运行,这将使UI响应。
答案 1 :(得分:0)
我建议使用async和await。这使得可以让其他任务在后台工作,而ui仍然可以响应。
using System.Threading.Tasks;
private async void Form1_Shown(object sender, EventArgs e)
{
// Start the loading animation here
await Task.Run(() =>
{
// Do work here!
});
// When the task is complete, stop the loading animation
}
请注意,在我的示例中,在任务中完成的所有内容都是在另一个线程上完成的,因此我建议您也要了解多线程。