我不知道如何在Compact .Net Framework中显示方法的执行。 例如,我有一个方法(例如上传()或打印())需要一些时间(在某些情况下是一个很大的间隔)来完成。我想要用户可以在进度条上看到耗时任务的进展(例如上传()。
我尝试使用Thread
和ThreadPool.QueueUserWorkItembut
执行此操作,但我被卡住了。
问题是我不知道如何同步方法的线程和进度条。
请帮忙。
答案 0 :(得分:2)
您可以将耗时的工作分配到该线程中的新线程,您可以确定您的进度并触发甚至像ProgressChanged(int actualProgress)
,然后在UI中处理该事件并根据来自的值设置进度条事件。那时你将不得不进行一些调度。
答案 1 :(得分:1)
我希望这有帮助:
ProgressBar pg = new ProgressBar();
pg.Maximum = 100;
pg.Step = 1;
this.Controls.Add(pg);
new Thread(new ThreadStart(() =>
{
// Replace with your code:
for (int i = 0; i < 100; i++)
{
if (pg.InvokeRequired)
pg.Invoke(new ThreadStart(() =>
{
pg.PerformStep();
}));
else
pg.PerformStep();
}
})).Start();
这一部分很重要,或者你得到一个例外:
if (pg.InvokeRequired)
pg.Invoke(new ThreadStart(() =>
{
pg.PerformStep();
}));
else
pg.PerformStep();
答案 2 :(得分:0)
“同步方法的线程和进度条”是什么意思“我只能猜测当你尝试更改进度条的值时会出现异常? 如果这是问题,您将必须使用线程安全的方式:http://msdn.microsoft.com/en-us/library/ms171728.aspx
答案 3 :(得分:0)