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();
}

再起動すると、アプリが中断した場所からではなく、エントリポイントから開始されるため、私には意味がありません。私は正しいですか?

Edit
CheckSomething()は次のことを行います: - これが ClickOnce アプリ (デバッグ) でない場合 - false を返します。- アップデートを手動で確認します。更新がある場合は、それを実行 (および再起動) し、true を返します。更新する必要がない場合は、false を返します。

4

2 に答える 2

1

論理的な観点からは、ここで何かを返すことは意味がありませんが、構文上、メソッドは または のいずれかでなければならないことに注意してください。リターンを削除すると、コンパイラは文句を言います。とにかく関数が false を返すだけであれば、関数は無効であった可能性があると主張するかもしれませんが、それは関数の残りの部分に依存します。returnthrow

于 2013-04-10T11:59:48.190 に答える
0

1 つの質問 実行中の自分の exe ファイルをそれ自体からどのように置き換えますか

私は自分のアプリケーションでも同じことをしました 更新を確認します 更新がない場合は続行します

更新プログラムがそれらを updater.exe を含む tmp フォルダーにダウンロードする場合、updater.exe を実行し、現在のアプリケーションを閉じます。

updater.exe はコンテンツを置き換え、アプリケーションを再起動します。

これは私にとって非常にうまく機能しています

于 2013-04-10T12:17:11.990 に答える