C# 聊天客户端API:如何判断消息何时到达

C# 聊天客户端API:如何判断消息何时到达,c#,events,C#,Events,我正在用C#编写聊天服务器和客户端以及客户端API 我想知道如何让API的用户知道何时有新消息到达 我可以 while(true){ messages = clientAPI.getMessages(); // do stuff } 但随后,它会多次收到相同的消息 谢谢一种常见的方法是在“事情发生”时通知用户 例如,您可以有一个自定义类型的MessageReceived事件,该事件提供了实际的消息。没有任何关于客户端API是什么的进一步信息,这将是一个可行的解决方案?它当然非常

我正在用C#编写聊天服务器和客户端以及客户端API

我想知道如何让API的用户知道何时有新消息到达

我可以

while(true){
    messages = clientAPI.getMessages();
    // do stuff
}
但随后,它会多次收到相同的消息


谢谢

一种常见的方法是在“事情发生”时通知用户


例如,您可以有一个自定义类型的
MessageReceived
事件,该事件提供了实际的消息。

没有任何关于客户端API是什么的进一步信息,这将是一个可行的解决方案?它当然非常适合这种类型的项目。

如果您在ASP.NET下工作,并且拥有适当的基础结构,我强烈建议您查看SignalR库


我承诺发布一个简单的事件示例。因此,您的服务器代码应该如下所示:

public class ClientApi
{

    public EventHandler SomethingHappened;

    public void StartWorkerMethod()
    {
        var i = 0;
        while (i < 10)
        {
            System.Threading.Thread.Sleep(2000);
            if (SomethingHappened != null)
                SomethingHappened(this, EventArgs.Empty);
            i++;
        }
    }
}

如果您在控制台应用程序中实现此功能,您将看到事件之间等待10次的结果。

我们需要获得更多信息!您使用什么样的平台(移动、web、windows…)以及什么是clientAPI(类型)?clientAPI是我自己创建的一个类。平台是Windows,因此我建议在该类中使用事件,而不是使用循环。我会发布一个样本。@taktak004明白了!学习是好的,但是重新发明轮子并不是最有效的。
var clientApi = new ClientApi();
clientApi.SomethingHappened += (s, e) => Console.WriteLine("Something happened on the server!");
clientApi.StartWorkerMethod();