Я написал класс, который подключается к серверу и вызывает событие после успешного подключения, но когда событие поднято, программа просто умирает и возвращается в среду IDE без сообщения отладки, как если бы я закрылзапрограммируйте себя.
Если я прокомментирую поднятие события, этого не произойдет.
ПРИМЕЧАНИЕ. Я никогда не использовал пользовательских событий раньше, поэтому возможно, что я сделал очень глупую ошибкуно без отладчика я потерялся.
Вот соответствующий код:
//In class
//defining the event
public event EventHandler OnConnectionChange;
//raising the event
private void OnConnect(IAsyncResult ar)
{
swSender = new StreamWriter(tcpClient.GetStream());
srReceiver = new StreamReader(tcpClient.GetStream());
Resp = srReceiver.ReadLine();
if (Resp.Contains("OK")) swSender.WriteLine("USER {0}", User);
else return;
swSender.Flush();
Resp = srReceiver.ReadLine();
if (Resp.Contains("OK")) swSender.WriteLine("PASS {0}", Password);
else return;
swSender.Flush();
Resp = srReceiver.ReadLine();
if (Resp.Contains("OK"))
{
Connected = true;
if (OnConnectionChange != null) OnConnectionChange(this, EventArgs.Empty);
thrMessaging = new Thread(new ThreadStart(ReceiveMessages));
thrMessaging.SetApartmentState(ApartmentState.STA);
thrMessaging.Start();
}
}
//in calling class
private void button4_Click(object sender, RoutedEventArgs e)
{
Globals.Session.OnConnectionChange += new EventHandler(Session_OnConnectionChange);
Globals.Session.User = txtUser.Text;
Globals.Session.Password = txtPass.Text;
Globals.Session.Login();
}
void Session_OnConnectionChange(object sender, EventArgs e)
{
if (Globals.Session.Connected) lblConn.Content = "Connected";
else lblConn.Content = "Not Connected";
}