我目前有一个函数,它将根据数据量创建函数的 X 个任务,我想用每个线程执行了多少数据来更新一个 int 变量以显示一个进度条。
目前我所有的 UI 都是从计时器更新的,所以我不会从线程委派来更新 UI(我相信在这种情况下会更麻烦),我将使用稍后将由计时器选取的计数来更新变量并更新用户界面。
我想知道的是,锁是更新变量的好方法还是有更好的方法?
如果非常频繁地使用该变量,计时器是否能够读取该变量,或者即使在更新时它的值较旧,它仍然能够读取它?
这是一个粗略的例子:
private static readonly object counterLock = new object();
int myCounter = 0;
private void FunctionExecutedByAllRunnningThreads()
{
int executed = 0;
foreach (some data)
{
//do something with this data
executed++;
}
lock (counterLock)
myCounter += executed;
}