C# webbrowser 多线程操作/跨线程操作
转发请标注来源:https://www.cnblogs.com/nanyunan/p/12271406.html
想要线程访问webbrowser,是可行的。但是需要一些小技巧,而在现今网络上,这些技巧被无效信息所掩盖。本文只是发现了一个技巧,并作记录,同时加一些自己的东西。
可以重写一个WebBrowser,如下。
public class WebBrowserEx : System.Windows.Forms.WebBrowser { public delegate void CallNone(); public delegate void CallOperate(CallNone Task); public void Operate(CallNone Task) { if (InvokeRequired) { CallOperate tmp = new CallOperate(Operate); Invoke(tmp,Task); } else { Task?.Invoke(); } } }
使用方法:
WebBorwserEx web=new WebBrowserEx(); void Test() { web.Operate(()=>{ web.Document.GetElementById("username").SetAttribute("value","用户名"); }); Thread.Sleep(800); web.Operate(()=>{ web.Document.GetElementById("submit").InnoverMember("click"); }); } Thread t=new Thread(Test); t.IsBackground=true; t.Start();

浙公网安备 33010602011771号