应用程序的两种启动行为

时间:2012-03-12 09:48:48

标签: c# wpf

我有一个应用程序,我希望有两种不同的启动行为 例如:如果用户从桌面或应用程序快捷方式运行应用程序,应该运行应用程序并要求输入。

但是,我的应用程序也被设置为启动应用程序。如果应用程序在计算机重启时自动启动,它不应该要求用户输入并且具有不同的流程(因为它将记住首选项)

如何实现这种行为? 也许,我正在考虑有两个不同的构造函数重载,这将在两个案例中做不同的事情。但是,如何选择在适当的时间运行哪个构造函数(启动应用程序运行/桌面应用程序运行)? 如何在WPF中完成?

2 个答案:

答案 0 :(得分:5)

您是否考虑过使用启动参数。 当你自动运行它时,你可以放一个参数

  

“MyApplication.exe -autostart”

安装快捷方式时,应用程序可以无参数启动

  

“MyApplication.exe”

在您的应用程序“Main”方法中使用if子句并做出相应的反应。 要这样做,检查主方法

中的参数“string [] args”
  

static void Main(string [] args)

答案 1 :(得分:0)

之前我已经使用不同的类完成了这项工作,因为根据配置,行为会有很大差异,我希望将这些案例完全隔离开来。

解析完命令行参数后,可以实例化一个类并使用以下方法调用方法:

string customerClassName = string.Format("DataProcessor.{0}Processor", ConfigurationManager.AppSettings.Get("Customer"));
Type customerClass = Assembly.GetExecutingAssembly().GetType(customerClassName);
ConstructorInfo ctor = customerClass.GetConstructor(System.Type.EmptyTypes);
Logger.Log("Instantiating class " + customerClassName);
object instance = ctor.Invoke(null);
customerClass.GetMethod("Run").Invoke(instance, new object[] { args });

在GetConstructor()中,你可以指定不同的构造函数重载,在我的case构造函数中没有参数。