如何解决跨线程操作无效:控制从创建它的线程以外的线程访问的“地址栏”
private void browser_LoadingStateChanged(object sender,LoadingStateChangedEventArgs e)
{
addressbar.Text = browser.Address;
}
我不知道为什么会这样。
解决方法
当您有多个线程(UI 线程和其他线程)时,如果您想从一个线程操作一个对象,而该对象是由另一个线程创建的,则会出现此问题。 您必须使用调用方法:
private void browser_LoadingStateChanged(object sender,LoadingStateChangedEventArgs e)
{
changeAddressBar(browser.Address)
}
void changeAddressBar(string txt){
if (addressbar.InvokeRequired)
addressbar.Invoke(new Action<string>(changeAddressBar),txt);
else
addressbar.Text= txt;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。