Vb.net 从子应用程序向父应用程序发送字符串

Vb.net 从子应用程序向父应用程序发送字符串,vb.net,process,Vb.net,Process,我的VB.NET WinForms程序(父级)使用Process.Start()调用另一个VB.NET控制台程序(子级)。子应用程序运行很快,我希望将状态消息返回给父应用程序。如何将字符串从子项发送到父项 由于父子关系,是否存在某种内置方式,或者我必须使用其他接口(如套接字)?您可以让调用的应用程序通过process.Start()发送命令行参数,然后被调用的应用程序使用该参数 根据您的需求/架构,这是一个好的、简单的设计;或者是个糟糕的主意 我假设是前者;但如果是后者,我强烈建议使用WCF来实

我的VB.NET WinForms程序(父级)使用
Process.Start()
调用另一个VB.NET控制台程序(子级)。子应用程序运行很快,我希望将状态消息返回给父应用程序。如何将字符串从子项发送到父项


由于父子关系,是否存在某种内置方式,或者我必须使用其他接口(如套接字)?

您可以让调用的应用程序通过process.Start()发送命令行参数,然后被调用的应用程序使用该参数

根据您的需求/架构,这是一个好的、简单的设计;或者是个糟糕的主意

我假设是前者;但如果是后者,我强烈建议使用WCF来实现这一点。除了视频游戏等高容量/高性能应用程序外,直接套接字调用一直是dodo的方式。使用WCF,您可以让客户端用很少的代码行发送其服务器应用程序数据


你在这里有什么要求?信息是经常发送还是刚开始就发送?这种情况发生的频率有多高?

只需在我的其他评论中添加一些代码,想象一下以下简单的子程序:

Module Module1
    Sub Main()
        Console.WriteLine("This is a test")
    End Sub
End Module
下面是家长:

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim P As New Process()
        P.StartInfo.FileName = "Child.exe"
        P.StartInfo.RedirectStandardOutput = True
        P.StartInfo.UseShellExecute = False
        P.Start()
        Dim T = P.StandardOutput.ReadToEnd()
        'Do something with T
    End Sub
End Class

我需要子程序简单地接受一个命令行参数,加载一个文件,发送一条摘要消息,然后退出。我唯一搞不懂的是“发一条总结信息回来”。子程序很可能不需要半秒钟就可以完成。在这种情况下,请让您的父调用进程。启动并让子程序写入StandardOutput/StandardError。通过重定向这些调用,您可以在父级中读回这些调用。听起来我的假设是对的。为此,您不想涉足为IPC使用命令行参数的业务。我强烈建议使用WCF;这是一个非常高的级别,请尝试在google中键入“WCF教程”。这里有一个我简单浏览过的链接,它是直截了当的:孩子是简单地调用Console.Write()还是我应该使用另一种方法?@Chris,当你必须处理并发性、文件权限、文件共享等问题时怎么办??除非这是你出于个人原因在家里做的一些爱好应用,否则我认为这不是一个好主意。如果这是任何类型的LOB/任务关键型应用程序,那么您只是自找麻烦。。。我们讨论的是一个中级软件工程师可能需要多做几天的工作,以便将其重构为使用WCF。见鬼,只要150美元,我就去做,应该只需要几个小时;)