值"重置"任务完成后回到零C#

时间:2016-06-02 09:43:55

标签: c# variables task handler

这是我的函数,它返回一个结构,其中包含成功命令的数量,有错误的数量以及总数 两者以及它们在Iprogress界面中被提取的文件路径。

RS

在我的主代码中,我调用了这样的函数:

   public void ExecuteCommands(string Directories, CdpsiUpdateSql Updater, CdpsiUpdateSqlparser parser, string Log, IProgress<Result> progress)
        {
            Result FinalResult = new Result();
            int totalWithErrors = 0;
            int totalSuccess = 0;
            string[] numArray1 = new string[3];
            List<string> list = ((IEnumerable<string>)Directory.GetFiles(Directories, "*.sql", SearchOption.TopDirectoryOnly)).Select(f =>
            {
                string[] strArray = Path.GetFileName(f).Split('_');
                int result;
                if (strArray.Length < 1 || !int.TryParse(strArray[0], out result))
                    result = -1;
                var data = new
                {
                    File = f,
                    Version = result
                };
                return data;
            }).Where(f => f.Version > -1).OrderBy(f => f.Version).Select(f => f.File).ToList<string>();
            foreach (string str in list)
            {
                int[] numArray2 = this.ExecuteCommand(parser.Parser(str), Updater, str, Log);
                int Succcesses = numArray2[0];
                int Errors = numArray2[1];
                //totalWithErrors += Errors;
                //totalSuccess += Succcesses;

                FinalResult.File = str;
                FinalResult.Errors = Errors;
                FinalResult.Successes = Errors;
                //FinalResult.TotalWithErrors = totalWithErrors;
                //FinalResult.totalSuccess = totalSuccess;


                progress.Report(FinalResult);
            }
        }
  

在处理程序上,传递给标签的值是正确的,标签会返回正确的值,Global.Cerros和Global.TotalExecSuccessfull = result.totalSuccess;也收到正确数量的错误,但是当foreach完成时都是0。               我无法理解为什么会这样。

1 个答案:

答案 0 :(得分:0)

您的问题出在top_k = tf.nn.top_k(h, 1) 上。每次将结果对象传递给IProgress.Report(FinalResult)方法时,都需要创建一个新的Result副本。

因此,要解决您的问题,您需要按如下方式更改代码:

IProgress.Report