【发布时间】:2013-09-05 08:57:52
【问题描述】:
我是代理新手,我想看看下面的代码是否会导致任何问题。我编写的代码没有使用共享变量,而是使用了共享委托,如下所示
public delegate void delSaveData(string data1, string data2);
private static delSaveData _delSaveData;
static void Main(string[] args)
{
Thread td1 = new Thread(td1func);
Thread td2 = new Thread(td2func);
td1.Start();
td2.Start();
}
private static void td1func()
{
while(true)
{
// do some operation
_delSaveData= new delSaveData(SaveData);
_delSaveData("someValueFromtd1", "someValueFromtd1");
}
}
private static void td2func()
{
while(true)
{
// do some operation
_delSaveData= new delSaveData(SaveData);
_delSaveData("someValueFromtd2", "someValueFromtd2");
}
}
private static void SaveData(string test1, string test2)
{
//Save Data in database
}
我假设代码应该可以正常工作,因为每次都会创建一个新的委托实例。我对吗? 如果创建的委托实例之一出现问题,会影响其他实例吗?
提前感谢您的回答,
【问题讨论】:
-
你说得对,但是这里为什么需要委托,你可以直接打电话给
SaveData。 -
你好,这只是对我理解委托的一个测试,我当然可以直接调用函数。
标签: c# multithreading winforms delegates