首页 > 解决方案 > 在 C# 中以异步形式建立条件

问题描述

我有一个问题,当我调用异步方法时,它进入并遇到我设置的条件,它向我发送一个异常,上面写着:

"进行调用的子进程无法访问该对象,因为所有者是另一个线程。",

我只希望条件过程使用异步方法在后台运行

    private Task ObtenerDatosd()
    {
        return Task.Run(() =>
        {
            for (int i = draw2.Count - 1; i >= 0; i--)
            {
                if (draw2[i].ToString().ToLower().Contains(SearcInterno.Text.ToLower()))
                {
                    //action
                    System.Windows.MessageBox.Show("Code action");
                }

            }

        });
    }

标签: c#wpfsynchronization

解决方案


如果没有调度程序,您无法从另一个线程访问 WPF 对象。但是在这种情况下你不需要它,如果你只使用:

private Task ObtenerDatosd()
{
    string text = SearcInterno.Text.ToLower();

    return Task.Run(() =>
    {
        for (int i = draw2.Count - 1; i >= 0; i--)
        {
            if(draw2[i].ToString().ToLower().Contains(text))
            {
                //action
                System.Windows.MessageBox.Show("Code action");
            }

        }

    });
}

推荐阅读