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 回答