, чтобы сделать это, мы должны знать три компонента
- место, ответственное за
firing the Event
- место, ответственное за
responding to the Event
Само событие
а. Событие
b .EventArgs
с. Перечисление EventArgs
теперь позволяет создавать событие, которое срабатывает при вызове функции
но я решаю эту проблему следующим образом: я использую класс, прежде чем создать его
место, ответственное за responding to the Event
NetLog.OnMessageFired += delegate(object o, MessageEventArgs args)
{
// when the Event Happened I want to Update the UI
// this is WPF Window (WPF Project)
this.Dispatcher.Invoke(() =>
{
LabelFileName.Content = args.ItemUri;
LabelOperation.Content = args.Operation;
LabelStatus.Content = args.Status;
});
};
NetLog - статический класс, который я объясню позже
следующий шаг
место, ответственное за firing the Event
//this is the sender object, MessageEventArgs Is a class I want to create it and Operation and Status are Event enums
NetLog.FireMessage(this, new MessageEventArgs("File1.txt", Operation.Download, Status.Started));
downloadFile = service.DownloadFile(item.Uri);
NetLog.FireMessage(this, new MessageEventArgs("File1.txt", Operation.Download, Status.Finished));
третий шаг
- Само событие
Я деформировал Событие в классе NetLog
public sealed class NetLog
{
public delegate void MessageEventHandler(object sender, MessageEventArgs args);
public static event MessageEventHandler OnMessageFired;
public static void FireMessage(Object obj,MessageEventArgs eventArgs)
{
if (OnMessageFired != null)
{
OnMessageFired(obj, eventArgs);
}
}
}
public class MessageEventArgs : EventArgs
{
public string ItemUri { get; private set; }
public Operation Operation { get; private set; }
public Status Status { get; private set; }
public MessageEventArgs(string itemUri, Operation operation, Status status)
{
ItemUri = itemUri;
Operation = operation;
Status = status;
}
}
public enum Operation
{
Upload,Download
}
public enum Status
{
Started,Finished
}
этот класс теперь содержит the Event
, EventArgs
и EventArgs Enums
и the function
, ответственные за запуск события
извините за этот длинный ответ