需要将应用程序的两个实例连接在一起C#

时间:2016-08-07 19:01:18

标签: c#

问题:

我在一台计算机上有一个应用程序实例(C#VS 2015),它连接到一个数据库(SQL)。

我在其他计算机上有其他相同应用程序的实例。

所有计算机都已连接,并且所有实例都使用相同的数据库。

当软件写入数据库时​​,UI将相应更改。

问题:

当任何计算机更改数据库时,如何刷新EVERY实例的UI?

示例:

点击按钮A: 1.在数据库中创建记录。 2.将按钮背景颜色更改为绿色。 3.告诉其他计算机刷新其实例以将其buttonA显示为绿色。

希望这不是一个愚蠢的问题,我感谢所有的帮助!

3 个答案:

答案 0 :(得分:2)

这不是一个愚蠢的问题,而是一个非常常见的要求。最好的解决方案(在我看来)是创建一个所有客户交谈的WCF服务。

只有服务对数据库执行操作,并且设计为双向服务。这样,一旦连接了客户端,如果另一个客户端改变了某些东西,该服务可以指示它自己刷新。没有客户会改变数据库本身。

如果这是不可能的,我害怕轮询数据库以进行更改是唯一适用于任何RDBMS的常用选项。您正在使用的RDBMS可能还有其他选项。

答案 1 :(得分:0)

您需要多快刷新一次?如果您有几秒钟,那么我建议使用轮询方法:只需在x秒后查询数据库,以便在上一次轮询后更新的所有记录。

返回的记录是要在UI中刷新的记录。索引datetime字段有助于最大限度地减少频繁/多次查询的影响。

答案 2 :(得分:0)

如果你有基于网络的用户界面,那么像SignalR之类的东西会为你做这件事。我之前使用过它,效果很好。