C# 如何向桌面应用程序发送推送通知
我有一个驻留在系统托盘中的应用程序,我希望使用推送通知系统,而不是标准的“轮询”方法(每隔X秒检查服务器以获取更新)。因此,当有更新时,所有客户机都会收到一条消息,并执行任务。Web服务器将使用Debian和Apache以及PHPC# 如何向桌面应用程序发送推送通知,c#,C#,我有一个驻留在系统托盘中的应用程序,我希望使用推送通知系统,而不是标准的“轮询”方法(每隔X秒检查服务器以获取更新)。因此,当有更新时,所有客户机都会收到一条消息,并执行任务。Web服务器将使用Debian和Apache以及PHP 我的目标平台是.NET3.5,那么该如何实现呢?观测者设计模式将不起作用(因为它是.NET 4.0或更高版本)。您必须创建两个接口及其派生的具体类。您的服务将创建IObservable、IObserver和ApplicationErrorState 您的客户端将创建类
我的目标平台是.NET3.5,那么该如何实现呢?观测者设计模式将不起作用(因为它是.NET 4.0或更高版本)。您必须创建两个接口及其派生的具体类。您的服务将创建IObservable、IObserver和ApplicationErrorState 您的客户端将创建类并从IObserver派生ErrorMessageSync 下面是我的示例,它显示了错误,是用.NET3.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
}
}
///它将存储观察者并推送消息
可观察的公共接口
{
无效附加(观察员);
无效分离(观察者);
无效通知();
}
公共接口观察器
{
无效更新(字符串消息);
}
///推送消息是一个具体的类
公共密封类ApplicationErrorState:IErrorObservable
{
私有列表=新列表();
///建造师
公共应用程序错误状态()
{
}
公共无效附加(IError观察员)
{
_添加观察员(观察员);
}
公共无效分离(IErrorObserver)
{
_观察员。移除(观察员);
}
公告
{
foreach(iErrorObservator in_Observators)
{
observer.Update(/*逻辑*/);
}
}
public void SetError()
{
通知();
}
///具体主题
私有类ErrorMessageSync:IErrorObserver
{
私人MyClass(家长);
公共ErrorMessageSync(MyClass父级)
{
_父母=父母;
}
公共无效更新(字符串消息)
{
//这项工作将完成
}
}
这是这种方法的UML
观察者设计模式不起作用(因为它是.NET 4.0或更高版本)。我讨厌当我必须使用.NET 1.1时,因为
单例模式是在.NET 2.0之前才设计的。“观察者设计模式不起作用(因为它是.NET 4.0或更高版本)。”-杰作LOL