这是我的函数,它返回一个结构,其中包含成功命令的数量,有错误的数量以及总数 两者以及它们在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。 我无法理解为什么会这样。
答案 0 :(得分:0)
您的问题出在top_k = tf.nn.top_k(h, 1)
上。每次将结果对象传递给IProgress.Report(FinalResult)
方法时,都需要创建一个新的Result副本。
因此,要解决您的问题,您需要按如下方式更改代码:
IProgress.Report