2013-07-30 6 views
2

Эй, ребята, у меня возникли проблемы с реализацией моего кода. В настоящее время я использую библиотеку PushSharp, и одна из вещей, которую я хотел бы сделать, - это если триггеры события, я хотел бы вернуть истинное или ложное значение в зависимости от того, какое это событие. Heres код:Как проверить, произошло ли событие C#

public static bool SenddNotification() 
{ 
var push = new PushBroker(); 

     //Wire up the events for all the services that the broker registers 
     push.OnNotificationSent += NotificationSent; 
     push.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged; 

} 


static bool DeviceSubscriptionChanged(object sender, string oldSubscriptionId, string newSubscriptionId, INotification notification) 
    { 
     //Currently this event will only ever happen for Android GCM 
     Console.WriteLine("Device Registration Changed: Old-> " + oldSubscriptionId + " New-> " + newSubscriptionId + " -> " + notification); 
     return false; 
    } 

    static bool NotificationSent(object sender, INotification notification) 
    { 
     Console.WriteLine("Sent: " + sender + " -> " + notification); 
     return true; 
    } 

Так что я хотел бы, если срабатывает событие, возвращает истину или ложь в зависимости от того, что происходит, а затем в конце концов возвращает это значение в первом методе

+0

Итак, это либо сценарий, либо сценарий, или будут случаи, когда оба будут стрелять? – MyCodeSucks

+0

не должно быть экземпляра, где оба огня. – user2094139

+1

Я бы сказал, создайте глобальный bool и верните это в свои события, а затем верните его в свой первый метод. Но это некрасиво. – MyCodeSucks

ответ

2

вы можете установить глобальную переменную bool, и ваши события задали эту переменную, а затем ваш первый метод вернет ее. Что-то вроде этого:

private bool globalBool; 

public static bool SenddNotification() 
{ 
var push = new PushBroker(); 

     //Wire up the events for all the services that the broker registers 
     push.OnNotificationSent += NotificationSent; 
     push.OnDeviceSubscriptionChanged += DeviceSubscriptionChanged; 

     return globalBool; 
} 


static bool DeviceSubscriptionChanged(object sender, string oldSubscriptionId, string newSubscriptionId, INotification notification) 
    { 
     //Currently this event will only ever happen for Android GCM 
     Console.WriteLine("Device Registration Changed: Old-> " + oldSubscriptionId + " New-> " + newSubscriptionId + " -> " + notification); 
     globalBool = false; 
    } 

    static bool NotificationSent(object sender, INotification notification) 
    { 
     Console.WriteLine("Sent: " + sender + " -> " + notification); 
     globalBool = true; 
    } 

Конечно, вы должны проверить его на null, прежде чем вернуть его, и обработать его соответствующим образом.

+0

Зачем мне нужно проверять значение null? – user2094139

+0

Oh nvm ... если ни одно из событий не загорелось – user2094139

+1

@ user2094139: Точно. Если никакие события не срабатывают, тогда он вернет null, и это может привести к нежелательным результатам. – MyCodeSucks

Смежные вопросы