[英]c# InvalidCastException
我嘗試使用此代碼:
webBrowser.Document.GetElementById("login").SetAttribute("value", "user");
它很好用,但是當我在新線程中使用它時卻不能。 我收到一個InvalidCastException。 我能做什么 ?
這應該工作:
delegate void ActionExecutorOnUI(ref HtmlElement a, string b, string c);
private void SetValueOnHtmlElementOnUIThread(this HtmlElement onElement, string propToChange, string valueGiven, WebBrowser linkToWebBrowser)
{
if (linkToWebBrowser.InvokeRequired)
{
ActionExecutorOnUI d = new ActionExecutorOnUI(SetValueOnHtmlElementOnUIThread);
linkToWebBrowser.Invoke(d, new object[] { });
}
else
SetValueOnHtmlElementOnUIThread(ref onElement, propToChange, valueGiven);
}
private void SetValueOnHtmlElementOnUIThread(ref HtmlElement onElement, string propToChange, string valueGiven)
{
onElement.SetAttribute("value", "user");
}
webBrowser
必須是GUI元素,並且大多數GUI元素不能很好地處理多線程。 通常,您只應在應用程序的主UI線程上訪問GUI對象。
將調用委托給UI線程的最簡單方法是使用Dispatcher.Invoke 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.