【问题标题】:Host .net remoting object in windows form application在 Windows 窗体应用程序中托管 .net 远程处理对象
【发布时间】:2011-08-12 03:51:42
【问题描述】:

我可以使用托管在控制台应用程序中的 .net 远程处理。但是有没有办法在表单应用程序而不是控制台应用程序中托管远程对象?这样服务器管理员就可以实时查看请求和响应。

任何想法都会有所帮助。

问候 SK保罗

【问题讨论】:

  • 为什么会有不同的做法?
  • 我想要一个服务器管理员监控活动。
  • 最好将活动记录到数据库或可搜索的地方。正如我的回答所述,您可以在表单中执行此操作,但如果您需要搜索日志或稍后参考它们,则需要更持久的东西。当应用程序崩溃时,表单中的活动将丢失,如果您只是将文本附加到文本框,您最终会耗尽内存并崩溃。
  • 非常感谢大卫。我从您那里得到了一些关于 .net 远程处理的宝贵建议。

标签: .net remoting


【解决方案1】:

是的。完全相同,只是不是在 Main() 中实例化和启动主机,而是在 Form_Load 或按钮单击事件中实例化并启动它,或者您选择启动它。没有什么不同。

只需创建一个 WinForms 应用并从控制台应用复制您的代码。

当响应进来时,如果你想在他们进来的时候看到消息,写到 Label 或 TextBox 而不是 Console.WriteLine()。

唯一需要注意的是,服务主机可能会在与表单 UI 不同的线程上运行,因此您需要了解 TextBox、Label 或其他控件的 InvokeRequired 属性,否则会出现错误当您尝试从另一个线程写入控件时。

调用必需属性:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invokerequired.aspx

如何对 Windows 窗体控件进行线程安全调用:http://msdn.microsoft.com/en-us/library/ms171728.aspx

【讨论】:

  • 如果我使用控制台应用程序,我不需要使用线程吗?
  • 不一样。 Console.Writeline 是线程安全的。 stackoverflow.com/questions/1079980/…
  • 非常感谢大卫。现在我正在阅读“如何:对 Windows 窗体控件进行线程安全调用”。希望msdn文章能帮助我学习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多