gpt4 book ai didi

c# - 在 C# 中的应用程序之间传递信息

转载 作者:太空狗 更新时间:2023-10-30 00:26:01 27 4
gpt4 key购买 nike

全部。首先我知道这个问题 Send data back to .exe from dll ,但是那里的答案给我留下了太多的开放式结局,而且由于我对我正在尝试的事情没有经验,所以我觉得有必要提出一个新问题。

我有一个严重依赖 SQL 的现有 C# [此处所有 WinForms] 应用程序。我们(客户)要求提供一个 SQL 编辑器和库,可用于开发和测试 SQL,但也可用于直接粘贴回主应用程序。新的 SQLEditor 是一个多线程应用程序,可以解析和执行 TSQL。我现在有一些事情要考虑;从主应用程序启动第二个应用程序的最佳方式是什么::

  1. 将第二个应用程序做成一个DLL并加载到主项目中,将第二个应用程序作为一个新的窗体调用(SqlEditor sqlEd = new SqlEditor()等)?线程轰炸意味着什么,我需要 [STAThread] - 因为我希望两个多线程应用程序同时可用和事件。

  2. 要作为独立于主应用程序的 .exe 启动?

取决于您的建议;在上述任何一种情况下 - 我可以将信息从第二个应用程序中的单击事件传递回主应用程序的最佳方式是什么,同时它们仍在运行和事件 [WCF,ApplicationDomains 等。 ]?会 Observer design pattern进来玩吗?

为了让这个问题更有吸引力,这里是 SQL 编辑器:

Editor

我计划有一个按钮,将选定的 SQL 粘贴回主应用程序。

我也知道这里有多个问题 - 对此我深表歉意。非常感谢您的宝贵时间。

最佳答案

如果您需要一种简单的方法来执行两个 WinForms 应用程序的外进程通信,那么为什么不使用具有自定义格式的 Clipboard

在源应用程序中:

    // copy the data to the clipboard in a custom format
Clipboard.SetData( "custom", "foo" );

在目标应用程序中,创建一个定时器来查看剪贴板:

    private void timer1_Tick( object sender, EventArgs e )
{
// peek the data of a custom type
object o = Clipboard.GetData( "custom" );
if ( o != null )
{
// do whatever you want with the data
textBox1.Text = o.ToString();
// clear the clipboard
Clipboard.Clear();
}
}

这应该可以满足您的需求,而且它仍然非常简单,因为它不需要任何重量级的外处理通信机制。

关于c# - 在 C# 中的应用程序之间传递信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13742637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com