如何向桌面应用程序发送推送通知

时间:2012-05-11 23:56:46

标签: c#

我有一个驻留在系统托盘中的应用程序,而不是标准的“轮询”方法(以X秒间隔检查服务器以获取更新)我希望使用推送通知系统。因此,当有更新时,所有客户端都将收到一条消息,他们将完成任务。 Web服务器将是Apache和PHP的Debian。

我的目标平台是.NET 3.5,那么如何做呢? Observer Design Pattern不起作用(因为它是.NET 4.0或更高版本)。

1 个答案:

答案 0 :(得分:2)

您必须创建两个接口及其派生的具体类。您的服务将创建IObservable,IObserver和ApplicationErrorState。

您的客户端将创建类,并将从IObserver派生ErrorMessageSync。

以下是我显示错误的示例,并使用.Net 3.5创建。

<强> P.S。您也可以使用代理

/// It will store observers and will push the message
public interface IErrorObservable
{
  void Attach(IErrorObserver observer);

  void Detach(IErrorObserver observer);

  void Notify();
}

public interface IErrorObserver
{
  void Update(string message);
}

///It is concrete class to push message
public sealed class ApplicationErrorState : IErrorObservable
{
  private List<IErrorObserver> _observers = new List<IErrorObserver>();

  ///constructor
  public ApplicationErrorState()
  {
  }

  public void Attach(IErrorObserver observer)
  {
     _observers.Add(observer);
  }

  public void Detach(IErrorObserver observer)
  {
     _observers.Remove(observer);
  }

  public void Notify()
  {
     foreach (IErrorObserver observer in _observers)
     {
        observer.Update(/*Logic*/);
     }
  }

  public void SetError()
  {
     Notify();
  }


  ///COncrete subject 
  private class ErrorMessageSync : IErrorObserver
  {
     private MyClass _parent;

     public ErrorMessageSync(MyClass parent)
     {
        _parent = parent;
     }

     public void Update(string message)
     {
            //This work will be done
     }
  }

这是这种方法的UML。

Check this UML diagram