在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;
                }
            }
        }
    }

在c#中,在完成另一个方法之后再运行一个方法

最简单的解决方案是将所有异步代码包装到一个方法中,这样它就可以在另一个线程中同步运行。但是您必须小心地从另一个线程访问GUI

如果你需要更复杂的解决方案,你可以使用async/await,这可能是最适合WF/WPF的。

如何等待直到await/async方法完成