0

这个问题我纠结了好久,还没下定论。我通常不是 UI 程序员,所以请原谅我的笨拙。

我正在编写一个带有 UI 层 (WPF) 和业务层的典型应用程序。我想从业务层(可能在业务层深处)向 UI 发布状态消息,但我不希望业务层对 UI 有任何了解。这有一个普遍接受的模式吗?

我在想有一个消息队列,业务层向其发布状态消息,并让 UI 的视图模型订阅该队列并拦截来自队列的消息并将它们路由到 UI。这是一个好方法吗?还有其他地方我应该开始吗?

谢谢你。

4

1 回答 1

1

我认为总的来说这是一个很好的方法。我将为您的消息提供者创建一个接口,该接口在收到消息时发布事件(其中 Message 是您想要的消息类型):

public class MessageReceivedEventArgs : EventArgs
{
    public MessageReceivedEventArgs(Message message)
        : base()
    {
        Message = message;
    }

    public Message Message { get; set; }
}

public delegate void MessageRecievedHandler(object sender, MessageReceivedEventArgs e);

public interface IMessageProvider
{
    event MessageRecievedHandler MessageReceived;
    void Start();
    void Stop();
    bool IsRunning { get; }
}

public abstract class MessageProviderBase : IMessageProvider
{
    public event MessageRecievedHandler MessageReceived;

    public MessageProviderBase()
    {}

    protected void OnMessageReceived(MessageReceivedEventArgs e)
    {
        if (MessageReceived != null)
        {
            MessageReceived(this, e);
        }
    }

    public abstract void Start();
    public abstract void Stop();

    public abstract bool IsRunning { get; }
}
于 2010-03-12T21:04:48.027 回答