這時候可以用lock
void Process(Image image)
{
lock(image)
{
//processing
}
}
void Updating(Image image)
{
lock(image)
{
//updating
}
}
lock會鎖定image的實體,因此就算是
var b = a;
lock(a)
{
//sec a
}
lock(b)
{
//sec b
}
sec a跟sec b 也不會同時被進入
另外,有趣的一點是VS的timer並非每個timer都有自己的thread,而是共用主執行續的thread,因此如果在tick()卡太久,主UI會卡住。但也因為這樣,timer之間的code不會同時執行,因此不用使用lock來避免資源被同時使用。
沒有留言:
張貼留言