-2

ウィンドウコンソールアプリケーションを作成しました。これは、ウィンドウタスクスケジューラから1つのコマンドラインパラメータ(true / false)を取得します。

私はこのプロセスを完全には認識していません。

私はこのコードを使用して引数を読み取ります:

bool dateOffset = false;
if (args.Length > 0)
{
    bool.TryParse(args[1], out dateOffset);
}

しかし、タスクスケジューラからプログラムを実行していると、次のようなエラーが表示されます。アプリケーション名が動作を停止しました。

問題がコードにあるのかタスクスケジューラにあるのかわかりません。引数なしでデバッグすると、コードは正常に機能します。

4

4 に答える 4

2

問題は次のとおりです。

bool.TryParse(args[1], out dateOffset);

C#の配列は(通常)0ベースです。つまり、配列の最初の項目は項目1ではなく項目0です。

コードを次のように変更してみてください。

bool.TryParse(args[0], out dateOffset);
于 2013-03-26T13:35:36.830 に答える
1

引数が1つある場合は、次のようにargs[1]なります。args[0]

于 2013-03-26T13:35:12.037 に答える
1

ここでif (args.Length > 0)は、args配列に少なくとも1つの要素があるかどうかを確認しています。

ただし、bool.TryParse(args[1], out dateOffset);配列の2番目の要素にアクセスしようとしています。

if条件が1の長さで合格したが、2番目の要素にアクセスしようとするとどうなるかを推測します。

使ってみてくださいargs[0]

于 2013-03-26T13:35:45.863 に答える
1

おそらく、args[0]になる最初の引数を取る必要があります。

于 2013-03-26T13:46:23.950 に答える