0

スクリプト タスクに次のコードがありますが、スクリプトを実行しようとすると、「呼び出しのターゲットによって例外がスローされました。 ---> オブジェクト参照がインスタンスに設定されていません」というメッセージが表示されます。物体。"

変数を使用してパッケージのデッドロック エラーに対処しようとしています。Region の値に基づいて、別の変数 InputRegion を入力しようとしています。

    public void Main()
    {
        String InputFile;
        int StrLen;
        Variables var = null;    
        Dts.VariableDispenser.LockOneForWrite("User::Region", ref var);
        var[0].Value = "DEFAULT";
        InputFile = (String)vars["User::InputRegion"].Value;

        if (InputFile == "Europe.txt")
            var[0].Value = "European";
        if (InputFile == "Amers.txt")
            var[0].Value = "American";
        if (InputFile == "Tokyo.txt")
            var[0].Value = "Asian";
        else        
            var[0].Value = "Unknown";

        var.Unlock();

        Dts.TaskResult = (int)ScriptResults.Success;
        }
    }
}
4

1 に答える 1

2

与えられた情報で、私はそれを推測できます:

問題

 Variables var = null;  

変数を値で初期化しnull、値を指定せずに使用します。
そこで使用するため(おそらく例外も発生する場所)

  Dts.VariableDispenser.LockOneForWrite("User::Region", ref var);

また

上記のコード行で var に値が設定されていない場合、プログラムがクラッシュする可能性があります。

  • そこには: var[0].Value = "DEFAULT";
  • そこには: var[0].Value = "European";
  • そこには: var[0].Value = "American";
  • そこには: var[0].Value = "Asian";
  • そこには: var[0].Value = "Unknown";
  • またはそこに:var.Unlock();

考えられる解決策

null問題があることを確認するのではなく、有効な値を指定してみてください。

于 2013-06-11T19:29:53.197 に答える