我正在开发一个小的excel应用程序,其中我有三个线程访问相同的功能。我希望当其他线程完成时,该函数必须由一个线程访问。有人可以帮助我。我试过下面的代码。
if ((checkBox1.Checked == true) && (textBox2.Text != ""))
{
Run_thread = new Thread(() => READ_MAPPING_FILE_PATHS(textBox2.Text, 5, 15));
Run_thread.Start();
}
if ((checkBox2.Checked == true) && (textBox5.Text != ""))
{
Run_thread1 = new Thread(() => READ_MAPPING_FILE_PATHS(textBox5.Text, 7, 9));
Run_thread1.Start();
//READ_MAPPING_FILE_PATHS(textBox5.Text, 7, 9);
check++;
}
if ((checkBox3.Checked == true) && (textBox6.Text != ""))
{
Run_thread2 = new Thread(() => READ_MAPPING_FILE_PATHStextBox6.Text, 5, 15);
Run_thread.Start();
}
//由线程访问的函数定义。
public void READ_MAPPING_FILE_PATHS(string path , int A429, int ACSB)
{
// do something
}
我尝试使用AutoResetEvent事件属性来处理,但这会导致我的应用程序处于无响应模式。
AutoResetEvent myResetEvent = new AutoResetEvent(false);
waitHandle.WaitOne();
waitHandle.Set();
答案 0 :(得分:0)
您只需使用lock
:
static object _lock = new object();
public void READ_MAPPING_FILE_PATHS(string path , int A429, int ACSB)
{
lock(_lock)
{
// do something
}
}