Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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# 动态地向WPF应用程序传递和使用数据,而无需重新启动它_C#_Wpf_Events - Fatal编程技术网

C# 动态地向WPF应用程序传递和使用数据,而无需重新启动它

C# 动态地向WPF应用程序传递和使用数据,而无需重新启动它,c#,wpf,events,C#,Wpf,Events,这是我在StackOverflow上的第一篇帖子,所以请耐心等待我:) 我正在寻找一种将值传递给已经运行的应用程序的方法。应用程序应该能够接受此值,并在其生命周期内将其用于进一步的操作。我不希望为了使用更新的值而注销/重新启动应用程序 场景如下: 应用程序在实例化时使用MachineName初始化和填充某些对象。一旦它启动并运行起来,我想给应用程序传递一个不同的工作站名称(可能来自命令行),应用程序应该能够使用这个MachineName,并进一步使用它。我不介意是否再次执行相同的操作,以使用新的

这是我在StackOverflow上的第一篇帖子,所以请耐心等待我:)

我正在寻找一种将值传递给已经运行的应用程序的方法。应用程序应该能够接受此值,并在其生命周期内将其用于进一步的操作。我不希望为了使用更新的值而注销/重新启动应用程序

场景如下:

应用程序在实例化时使用MachineName初始化和填充某些对象。一旦它启动并运行起来,我想给应用程序传递一个不同的工作站名称(可能来自命令行),应用程序应该能够使用这个MachineName,并进一步使用它。我不介意是否再次执行相同的操作,以使用新的MachineName名称初始化所需的对象


所讨论的应用程序是一个带有C#的WPF应用程序。它还使用了一些WCF服务。我正在考虑使用一个公共注册表项来存储工作站名称,这个注册表项需要在应用程序中使用/更新。所以它应该是第一个接触点。但我不确定这是否是一个更好的方法。有什么好主意吗?

用电脑观看磁盘上的文件很容易。当应用程序收到更改通知时,请重新读取文件内容并更新应用程序状态。

应用程序启动时会侦听套接字端口或查看共享文件,如果再次使用参数调用应用程序,则只需打开套接字端口或将命令写入文件,第一个应用程序可以执行重新初始化

首先,我想你可能把事情复杂化了一点。如果您只需要给应用程序一个新字符串“MachineName”,那么您有几个选项(这当然不是您的全部选项,只是需要考虑几个):

  • 由于这是一个WPF应用程序,我们可以假设某个用户正在与之交互……否则它也可能只是一个控制台应用程序。如果是这种情况,请创建一个视图,让用户能够更改MachineName。可能是一个列出所有可用MachineName的组合框和一个开始重新初始化所需的按钮
  • 显然你已经为服务电话准备好了管道。您可以让您的应用程序同时充当客户机和服务,允许您远程(读取:在此应用程序之外)更新MachineName
  • 您可以将此应用程序设置为监视特定目录或文件(正如@jlew所指出的),当该文件发生某些更改时,您的应用程序将读取该更改(新MachineName)并开始重新初始化例程

  • 我不知道您的全部要求,但我可能会将其设置为1和2,这将给您带来更多的灵活性。

    欢迎使用SO!那么,在应用程序的某个地方有一个输入字段来接受一个新的机器名有什么不对呢?否则,听起来像是在试图使简单的东西变得非常复杂。如果是WPF应用程序,那么为什么要从命令行读取?WPF具有UI。为什么不让工作站名称的文本框和流程的按钮都显示出来?@Blam:正如下面提到的,我不能在我的应用程序中使用用户的直接输入。我需要在不干扰当前应用程序流的情况下获得新的机器名。((可能来自命令行)如何不是直接的用户输入?您的WPF应用程序不能有流和活动UI?@Blam-感谢您的输入。。这就是应用程序的设计方式。。。它基本上是一个托管平台,其他应用程序可以在其中托管自己。。因此,该应用程序没有自己的“UI”。。所以我必须找到一种只在后台传递的方法。。然而,我已经在我的应用程序中找到了一个现有的功能,可以用来触发工作站更改。。。所以我正在尝试…谢谢Ryan的评论。我的应用程序的设计是这样的,它试图用代码找出机器名。还有一些检查可以确定应用程序是否在本地桌面、虚拟机或任何虚拟化软件(如Citrix/VMWare等)上运行,因此我无法将组合框放入应用程序中。。建议的第三个选项看起来很有用,我会尝试一下……谢谢@jlew。。我来看看这个技巧