c# - 从另一种方法或异步访问文本框

标签 c# windows-phone-7 asynchronous

我是 C# 的新手,在异步方法中检索 textbox 值时遇到了一些问题。我线程检索 UI 中的文本输入并在代码中使用它。 VS 2010 接受了我的代码,但是当我开始调试时,它给了我以下异常 无效的跨线程访问。想法?我错过了什么吗?

public void Response_Completed(IAsyncResult result)
{
    HttpWebRequest request = (HttpWebRequest)result.AsyncState;
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);

    using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
    {
        JObject rootObject = JObject.Load(new JsonTextReader(streamReader));

        string tracknum = trackid.Text; // Invalid cross-thread access exception
        string source = rootObject[tracknum]["source"].ToString();

        Deployment.Current.Dispatcher.BeginInvoke(() =>
        {
            //removed
        });
    }
}

注意:我正在尝试在 Windows Phone 7 平台上执行此操作

最佳答案

您应该在 UI 线程而不是其他线程上获取文本框值。 Invoke method在 UI 线程上执行指定的委托(delegate):

string tracknum = (string)trackid.Invoke(new Func<string>(() => trackid.Text));

编辑:

在 Windows 手机上:

string tracknum = string.Empty;
Deployment.Current.Dispatcher.BeginInvoke(() =>
   {
       tracknum = trackid.Text;
       string source = rootObject[tracknum]["source"].ToString();
   });

关于c# - 从另一种方法或异步访问文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13150979/

相关文章:

C# 早期绑定(bind)和后期绑定(bind)概念

c# - 如何让AsyncLocal流向 sibling ?

windows-phone-7 - 为什么此 SSL 证书在浏览器中可以正常验证,但在 .NET/Silverlight 中却不行?

c# - 如何为 Windows Phone 7 添加字体

javascript - 如何使用 Q.js 在循环中执行异步函数

Java ~ 通过套接字连接发送枚举

c# - 通过 C# 窗口应用程序在谷歌中搜索关键字

c# - ApplicationBarIconButton 名称引用会导致 NullReferenceException,但并非在所有 Windows Phone 7 应用程序中?

asynchronous - Task.Delay(-1) 的 F# 等价物是什么?

c# - 如何关闭外部网络浏览器中的选项卡?