一段C#代码 求分析
Object lockObject = new Object();
private void button1_Click(object sender, EventArgs e)
{
string hostname = "localhost";
int port = 57410;
lock(lockObject)
{
if(NPHardwareManager.Instance.OpenHardware(hostname, port, new
NPNetworkClientCallbackDelegate(CommunicationAvailable)))
{
NPHardwareManager.Instance.InitializeHardware();
NPHardwareManager.Instance.InitializeRamanEleven();
NPHardwareManager.Instance.GetClient().ReceiveUDPPacketCallback
+= new NPNetworkClientCallbackDelegate(ReceiveUDPPacket);
}
}
}
private void CommunicationAvailable(NPNetworkClient client)
{
try
{
lock(lockObject)
{
InitializeHardware();
}
}catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
如上所示,lockObject 的作用是什么?好像并不是具体的对象。ReceiveUDPPacket回调函数是不是必须在多线程下才能正常调用,求高手解答
C#
多线程
对象
------解决方案--------------------lockObject代表你希望跟踪的对象,通常是对象引用。
应该是鼠标点击的时候获得的对象把
------解决方案--------------------这些问题,自己去看看msdn关于lock的介绍,就清楚了。
lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。此语句的形式如下:
Object thisLock = new Object();
lock (thisLock)
{
// Critical code section
}
------解决方案--------------------
这是一个明白人。1L瞎掰。