class Port
{
static readonly object locker = new object();
List<Connection> listOfConnections = new List<Connection>
public void MethodX()
{
Thread.Sleep(10000);
lock(locker)
{
listOfConnections.RemoveAt(0);
}
}
public void ReceiveFromSwitch()
{
lock(locker)
{
if(listOfConnections.Count == 0) listOfConnections.Add(new Connection());
if(listOfConnections.Count == 1) MessageBox.Show("Whatever");
new Thread(()=>MetohodX()).Start();
}
}
}
這是我的代碼,兩個不同的線程調用方法ReceiveFromSwitch()。我的目標是給一個消息框「無論」。一個線程首先啓動。它進入ReceiveFromSwitch,鎖定資源,第二個線程正在等待資源釋放。在列表中添加一個連接,它進入MethodX()並釋放隊列中線程的方法ReceiveFromSwitch。第二個步驟進入該方法。計數等於1,因此它顯示消息。鎖定多線程
它不起作用。它給出了兩個信息「無論」。我該如何解決它?
愚蠢的問題,但是兩個線程調用'端口'的同一個實例的方法?因爲列表不是靜態的。 – Rotem
是的。它是同一個實例。 – user3076439
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –