在c#中,在完成另一个方法之后再运行一个方法
本文关键字:方法 一个 再运行 之后 另一个 | 更新日期: 2023-09-27 18:05:36
我想,我在c#/WPF中有线程问题。
如何在一个方法之后运行另一个方法来防止一些问题,如Null值
我认为在下面的代码"IF语句"之前运行"selectLessonContent(selectedLessonId)"方法,并导致空值问题在下面。
当我在selectLessonContent(selectedLessonId)方法之后使用MessageBox.Show()时,这个问题消失了。
private void btnSelectLesson_Click(object sender, ExecutedRoutedEventArgs e)
{
selectLessonContent(selectedLessonId);
if (selectedUserID != "QuickStart")
{
int lessonScore = Int32.Parse(userlessonManager1.selectUserLesson("existCheck", selectedUserID, selectedLessonId).Rows[0][3].ToString());
if (lessonScore < sectionListview.Items.Count )
{
for (int a = 1; a < sectionListview.Items.Count; a++)
{
ListViewItem item = sectionListview.ItemContainerGenerator.ContainerFromIndex(a) as ListViewItem;
ContentPresenter templateParent = GetFrameworkElementByName<ContentPresenter>(item);
DataTemplate dataTemplate = sectionListview.ItemTemplate;
//error occured Here : Value cannot be null.
Button btnTemp = dataTemplate.FindName("btnSectionList", templateParent) as Button;
btnTemp.IsEnabled = false;
}
}
}
}
最简单的解决方案是将所有异步代码包装到一个方法中,这样它就可以在另一个线程中同步运行。但是您必须小心地从另一个线程访问GUI
如果你需要更复杂的解决方案,你可以使用async/await,这可能是最适合WF/WPF的。
如何等待直到await/async方法完成