Moo*_*oon 0 .net c# multithreading thread-safety
如何控制允许线程访问对象的时间以及何时不允许该线程访问对象.
例如,如果我有下面的情况,我想确保当我在ButtonClick事件中使用objFoo做某事时,我不能从我的doSomethingWithObjFoo方法触摸objFoo.
private void button1_Click(object sender, EventArgs e) {
// doing something with objFoo
}
private void timer1_Tick(object sender, EventArgs e) {
Thread T = new Thread(new ThreadStart(doSomethingWithObjFoo));
T.Start();
}
private void doSomethingWithObjFoo(){
// doing something else with objFoo
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法可能是使用lock:
private object _fooLock = new object();
private void button1_Click(object sender, EventArgs e) {
lock(_fooLock)
{
// doing something with objFoo
}
}
private void timer1_Tick(object sender, EventArgs e) {
Thread T = new Thread(new ThreadStart(doSomethingWithObjFoo));
T.Start();
}
private void doSomethingWithObjFoo(){
lock(_fooLock)
{
// doing something else with objFoo
}
}
Run Code Online (Sandbox Code Playgroud)
还有其他选项,例如使用a ReaderWriterLockSlim.
| 归档时间: |
|
| 查看次数: |
1929 次 |
| 最近记录: |