我是C#和.NET的完全乞丐 我应该在C#中为后端进程实现GUI 我需要遵循的设计是使用数据网格来显示数据,当用户点击行时,会出现其他表示。例如。数据图 gui由一个过程管理,例如ProcessA。另一个过程,例如ProcessB,处理和与远程服务通信生成将在gui中显示的数据 ProcessB和ProcessA通过共享内存进行通信。即ProcessB在看到更新(通过脏位)更新时更新共享内存和ProcessB 网格中相应的数据行 我的问题是:
这种设计是.NET和这种情况下GUI的常用方法吗?我问,因为我个人根本不喜欢它,并且想知道我是不是不喜欢它。
如果需要快速更新GUI,是否有更好的设计?例如。 ProcessA和ProcessB应该只是一个过程吗?
这个设计是否可以在C#中实现?即通过共享内存更新数据网格?因为,我google了一下,似乎大多数教程都描述了数据网格绑定到数据源(用于db访问或xml文件读取)
在C#中gui是否完全更新,即每次更新行时都会完全重绘?在这种情况下是使用脏位来知道更新共享内存的哪一部分以便更新gui的相应部分,没用?
是否可以以某种方式创建一个gui,以便每次共享内存更改时自动更新?
更新: ProcessA和ProcessB在同一台计算机上
谢谢
答案 0 :(得分:0)
答案 1 :(得分:0)
通常,具有已定义接口和方法的客户端/服务器方法会创建更清晰的代码,并且您知道每个部分的功能。使用共享内存和例如信令会产生更紧密的耦合,并且读取代码不会立即告诉您发生了什么,因为它更复杂(在我个人看来)。也就是说,如果速度是最大的,我的意思是最重要的,使用共享内存。如果没有,请使用双工服务合同进行WCF和命名管道绑定。它干净,可重复使用。
答案 2 :(得分:0)
按过程你的意思是线程吗?或者我们在谈论GUI和Windows服务?
如果您正在使用线程,共享内存就可以了。如果它们是实际进程,则“正确”方法是在命名管道上创建WCF服务以进行机器进程间通信。 (这也使得移动过程非常简单)。这样,您可以使用双工(双向)WCF绑定在数据更改时更新您的Gui。
通过事物的声音,你需要线程而不是进程。在.NET中,有一个名为BackgroundWorker的类,它专为此类场景而设计。需要注意的重点是,如果需要从后台线程更新gui,则需要使用Gui线程调度程序。 http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx
这可能是一个学习曲线,但我强烈建议你研究使用WPF和MVVM来做到这一点。它是一个gui框架,非常适合绑定到动态数据。