Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过WCF使用参数调用已在运行的实例并等待字符串结果_C#_Wcf_Console_Single Instance - Fatal编程技术网

C# 通过WCF使用参数调用已在运行的实例并等待字符串结果

C# 通过WCF使用参数调用已在运行的实例并等待字符串结果,c#,wcf,console,single-instance,C#,Wcf,Console,Single Instance,首先:我真的知道谷歌是什么,是的,这个主题有几个现有的线程,但我只是没有找到我要搜索的内容 情况可能很复杂,希望我不会忘记解释任何事情 我来回答这个问题: 我有一个应用程序,在一个系统上只允许运行一次 所以我首先用互斥锁锁定了它,这还不够,因为有一个要求,应用程序必须接受命令行参数——即使它已经在运行 好的,我在谷歌上搜索了一下,最后尝试了一些修改后的解决方案,只是一些结构问题,没有改变内部行为。现在,在尝试启动一个有参数和无参数的新应用程序时,我能够获得已经运行的应用程序实例。我可以在类中调用

首先:我真的知道谷歌是什么,是的,这个主题有几个现有的线程,但我只是没有找到我要搜索的内容

情况可能很复杂,希望我不会忘记解释任何事情

我来回答这个问题:

我有一个应用程序,在一个系统上只允许运行一次

所以我首先用互斥锁锁定了它,这还不够,因为有一个要求,应用程序必须接受命令行参数——即使它已经在运行

好的,我在谷歌上搜索了一下,最后尝试了一些修改后的解决方案,只是一些结构问题,没有改变内部行为。现在,在尝试启动一个有参数和无参数的新应用程序时,我能够获得已经运行的应用程序实例。我可以在类中调用具有[OperationContract]属性的方法,该类从具有[ServiceContract]属性的接口继承

到目前为止还不错

现在,当我使用参数从命令行调用第二个实例时,我指的是应用程序路径,然后是参数,调用通过WCF传输到要执行的第一个运行实例,但我现在要等待调用的结果,并在外部控制台中显示字符串,当我使用第二个实例在调用后退出的参数启动第二个实例时,命令行仍在运行以进行进一步的活动


如果有人对此有任何想法,最好与stackoverflow社区共享:

链接文档包含了使此工作正常进行所需的一切,我想我不明白这个问题是什么?显然,在StartService函数中,您将指定一个名为pipeuri的常量,但基本上就是这样。您使用代理尝试连接到服务-如果服务未运行,则启动应用程序,否则通过代理调用并处理结果。如果您想从服务返回结果,那么您的以OperationContract标记的服务不应该像示例中那样返回void,因为这不会返回任何内容。嘿,感谢您的快速响应,但这不是问题@sircodesalot。我已经有了一个返回值标记为OperationContract的方法。这是完美的运行。我想在我的外部控制台窗口上显示此结果,但该应用程序仍然是WinForms应用程序。。。哦,我明白了,我没有提到这是WinForms应用程序,我的错。不确定您的配置是什么,但仅供参考,您可以在项目设置中将您的应用程序设置为控制台应用程序,而不是窗口应用程序,然后通过调用我相信它是应用程序手动启动窗体部分。运行调试非常好。如果是这样的话,那么是的,您只需获取结果并调用Console.WriteLine。让我知道这是否正确。看看这个:更改为控制台应用程序可以处理输出,但最大的缺点是,控制台窗口总是打开的,即使在第一次启动时gui总是必须打开的,这也是不使用此解决方案的原因。我读了这篇文章,我想如果没有任何难看的副作用,我打算做什么是不可能的。我将尝试使用命令行参数将访问分离到一个额外的小控制台应用程序。这不是最好的解决方案,但我希望能够从打开的cmd.exe->执行操作->将结果打印到cmd.exe窗口调用控制台应用程序。