多個實例,在事件處理程序的聲明類似下面,做他們往往重疊,並設置一個變量事件處理器和多類實例和重疊的變量C#
對於發言權的所有實例,
Something class = new Something();
被聲明〜3次,並且所有3次,事件處理程序被聲明和使用。
public class something
{
public string str = "1";
public string str2 = "2";
public void onconnect(object sender, ConnectedEventArgs e)
{
if (e.Connected)
{
this.ses = e.NetworkSession;
this.ses.OnHandshakeHandler += new EventHandler<HSEventArgs>(OnHandshakeHandler);
this.ses.onreceive+= new EventHandler<PEventArgs>(onreceive);
return;
}
}
}
現在可以說
public void onreceive(object sender, PEventArgs e)
{
str = "3";
}
會str的全部變爲 「3」 onrecieve?因爲在我的情況下,我開始相信事件處理程序在類的所有實例之間共享。因此,所有類的實例中的所有變量都是相同的。
如果情況並非如此,那麼事件處理程序能否成爲爲什麼我的變量都會被同一個事件引發更改的原因? 如果是這樣,你將如何隔離類並將處理程序分配給每個單獨的類?
的onConnect由
public void Connect(string ip, short port)
{
try
{
this.connector = new Connector();
this.connector.OnClientConnected += new EventHandler<ConnectedEventArgs>(onConnect);
this.connector.Connect(ip, port); //Logs into server
}
catch
{
updateLog("[Error]Servers exploded!!!", this);
}
}
稱爲和^當按鈕被上的GUI
這取決於如何調用onconnect()。它怎麼叫? – 2013-04-29 08:07:43
我剛剛編輯它。 – user2309449 2013-04-29 08:11:45
'ses'沒有聲明,是'onconnect'應該訂閱一些未定義的'Connect'事件? – Jodrell 2013-04-29 08:12:22