2013-04-10 43 views
0

这似乎很傻,但我处理遗留代码(.NET4,C#),其中包含:后重新启动应用程序从一个方法返回一个值

bool retVal = CheckSomething(); 

... 

private bool CheckSomething() 
{ 
    if(whatever) return false; 
    else 
     { 
      DoSomething(); 
      return true; 
     } 
} 

private void DoSomething() 
{ 
    ... 
    System.Windows.Forms.Application.Restart(); 
    System.Windows.Application.Current.Shutdown(); 
} 

对我来说没有任何意义因为重新启动应该会导致应用程序从入口点开始,而不是从停止点开始。我对吗?

编辑
CheckSomething()执行以下操作: - 如果这不是一个ClickOnce应用程序(调试) - 返回false。 - 手动检查更新。如果有更新,请执行(并重新启动),然后返回true。如果不需要更新,则返回false。

+0

也许这就是为什么'whatever'提到,要检查是否变更尚未保存或类似的东西 – 2013-04-10 11:50:03

回答

1

虽然从逻辑上来看它没有意义在这里返回的东西,请注意语法,方法必须要么returnthrow。如果你删除了返回值,编译器会报错。你可能会争辩说,如果函数只返回错误,函数可能是无效的,这取决于函数的其余部分。

+0

新增的正是它的详细描述。 – Noich 2013-04-10 12:08:16

0

一个问题 你如何从自身替换自己的运行exe文件

我做同样的我的应用程序 我检查更新继续,如果没有更新

如果更新下载到一些TMP其中包含updater.exe的文件夹 执行updater.exe并关闭当前应用程序

updater.exe将替换内容并重新启动应用程序。

这是工作非常正常,我

+0

使用'System.Deployment.Application.ApplicationDeployment.UpdateAsync()',这是用'ClickOnce'内置的。 – Noich 2013-04-10 12:41:10

相关问题