1

我有一个 ASP.NET WebApi 自托管服务,它对一个名为Transaction. 另外,我有一个单独的 WinForms 应用程序,它作为我下载的客户端Transaction。有可能,该客户端可能是 Android 应用程序上的 Web 应用程序(服务不应该关心它)。

Transaction有一个名为 的属性Status,它在操作期间从提交 -> 进行中 -> 完成/错误发生变化。

目前,我的客户是这样工作的:

SubmitTransaction(Transaction t);

while(t.Status==inprogress)
{
   Thread.Sleep(1000);
   t= GetTransactionStatus();
}

如您所见,我必须每秒“PING”我的服务才能获得状态更新。我想知道,有没有办法“听”我的服务并返回Status,当它在没有循环和睡眠的情况下更新服务时?我正在使用 .NET 3.5

请随时询问更多信息,在此先感谢!

4

1 回答 1

2

您正在寻找的是所谓的推送通知

有很多库和实现。.net 中最著名的是SignalIR

在那里你可以找到一个关于如何在非网络上下文中使用它的例子:http: //mscodingblog.blogspot.it/2012/12/testing-signalr-in-wpf-console-and.html

无论如何,它们的设置非常复杂,如果您认为只有少数客户可以请求该交易,并且您不需要应用程序其他方面的实时推送通知,我认为检查状态更容易/更快你正在做的X秒。

PS请使用定时器而不是Thread.Sleep

于 2013-11-11T09:42:28.020 回答