[C#] Проблема с событем
От: Аноним  
Дата: 21.09.06 17:21
Оценка:
есть класс с событием

class Client
{
public class NewMessageArgs : EventArgs
{
public readonly string from, message;
public NewMessageArgs(string from, string message)
{
this.from = from;
this.message = message;
}
}

public delegate void NewMessageEventHandler(Object sender, NewMessageArgs args);

public event NewMessageEventHandler NewMessage;

protected virtual void OnNewMessage(NewMessageArgs e)
{
if (NewMessage != null)
NewMessage(this, e);
}

public void SimulateNewMessage(string from, string message)
{
NewMessageArgs e = new NewMessageArgs(from, message);

OnNewMessage(e);
}


public void Read()
{
ReadBuffer = new byte[BufferSize];

try
{
_Stream = _TcpClient.GetStream();
}
catch { }

_Stream.BeginRead(ReadBuffer, 0, BufferSize, new AsyncCallback(DoRead),null);
}

private void DoRead(IAsyncResult a)
{
try
{
int t = _Stream.EndRead(a);
string mess = Encoding.UTF8.GetString(ReadBuffer, 0, t);
SimulateNewMessage(null, mess);
_Stream.BeginRead(ReadBuffer, 0, BufferSize, new AsyncCallback(DoRead), null);
}
catch
{
MessageBox.Show("123");
Application.Exit();
}
}
}

класс, который подписывается на уведомление о событии

public partial class MessageWindow : Form
{
Client Guest;

public MessageWindow(Client Guest)
{
InitializeComponent();
this.Guest = Guest;
this.Guest.NewMessage += new Client.NewMessageEventHandler(Guest_NewMessage);
}
}

class Program
int main()
{
Client my = new Client(new TcpClient(textBox1.Text, 59));

MessageWindow mw = new MessageWindow(my);
mw.Show();
}

так вот, когда messagewindow должен реагировать на произошедшее событие, как то приход мессаги, ничего не происходит по след. причине:
protected virtual void OnNewMessage(NewMessageArgs e)
{
if (NewMessage != null) //NewMessage == null
NewMessage(this, e);
}

как сделать правильно? заранее благодарен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.