Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wpf中未更新标签_C#_Wpf_Multithreading_Dispatcher - Fatal编程技术网

C# wpf中未更新标签

C# wpf中未更新标签,c#,wpf,multithreading,dispatcher,C#,Wpf,Multithreading,Dispatcher,我在WPF中遇到了一个问题,即当一个方法正在进行时,标签不会更新。 这是代码 private async void BtnMatching_Click_1(object sender, RoutedEventArgs e) { var selectedItem = (dynamic)ListViewQueries.SelectedItems[0]; var myQuery = _queryFolder[selectedItem] as Microsoft.TeamFoundat

我在WPF中遇到了一个问题,即当一个方法正在进行时,标签不会更新。 这是代码

private async void BtnMatching_Click_1(object sender, RoutedEventArgs e)
{
    var selectedItem = (dynamic)ListViewQueries.SelectedItems[0];

    var myQuery = _queryFolder[selectedItem] as Microsoft.TeamFoundation.WorkItemTracking.Client.QueryDefinition;

    DataTable dtRevision= new DataTable();
    DataTable dtExportData = new DataTable();

    var TTSList = Task<List<UsersModel>>.Factory.StartNew(() => TTSProcessing(TTSFileName));

    LblMessage.Content = "Processing TTS File...";
  //  LblMessage.Dispatcher.BeginInvoke(new ThreadStart(() => LblMessage.Content = "Processing TTS File..."));

        await TTSList;

    if (TTSList.Status == TaskStatus.RanToCompletion)
    {
     LblMessage.Dispatcher.BeginInvoke((Action)(() => LblMessage.Content = "File Completed, Now Executing Query...")); //--> This code is not working here
    }

//Other code
}
private async void BtnMatching\u Click\u 1(对象发送方,RoutedEventArgs e)
{
var selectedItem=(动态)ListViewQueries.SelectedItems[0];
var myQuery=\u queryFolder[selectedItem]作为Microsoft.TeamFoundation.WorkItemTracking.Client.QueryDefinition;
DataTable dtRevision=新DataTable();
DataTable dtExportData=新DataTable();
var TTSList=Task.Factory.StartNew(()=>TTSProcessing(TTSFileName));
LblMessage.Content=“正在处理TTS文件…”;
//LblMessage.Dispatcher.BeginInvoke(新的ThreadStart(()=>LblMessage.Content=“正在处理TTS文件…”);
等待TTSList;
if(TTSList.Status==TaskStatus.RanToCompletion)
{
LblMessage.Dispatcher.BeginInvoke((操作)(()=>LblMessage.Content=“文件已完成,正在执行查询…”);//-->此代码在此处不起作用
}
//其他代码
}
我想在TTSList任务完成后更新LblMessage标签。记住(其他代码意味着在IF块之后还有许多其他代码)。
谢谢。

您是否尝试在
BeginInvoke
上设置断点?是
RanToCompletion
还是其他原因(因此没有标签更新)?顺便说一句,使用
InvokeAsync
@Sinatr:Yes我设置了两个断点;一个在RANTO完成,另一个在行动中。首先,当TTSList完成时,它会点击RanToCompletion,但当其他代码完成时,它会点击另一个(操作)。您真的需要最后一个BeginInvoke吗?您已经在GUI线程上?请提供有关您的问题的最小、完整和可验证的示例。此代码不需要Dispatcher更新GUI-至少在该位置