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#多线程对象
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#多线程对象
应该是鼠标点击的时候获得的对象把
Object thisLock = new Object();
lock (thisLock)
{
// Critical code section
}