如何处理c#中3个线程访问同一个函数
本文关键字:线程 3个 访问 同一个 函数 何处理 处理 | 更新日期: 2023-09-27 18:06:09
我正在开发一个小型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();
您可以简单地使用lock
:
static object _lock = new object();
public void READ_MAPPING_FILE_PATHS(string path , int A429, int ACSB)
{
lock(_lock)
{
// do something
}
}