解决方案 »
- 哪位大侠给帮忙解决下咯!
- [IE编程]该死的webbrowser保存对话框,求绝杀方法!
- 怎么把c++的程序改写成c#
- 奇怪的,找不到类型或命名空间 问题。
- .NET2005中:C#与C++的一个多工程解决方案中,为什么C#使用C++类时全成了struct
- 初学,问个简单问题
- 100分求这里的朋友帮我构建一个DataTable,一定要有代码,类似于金蝶的凭证查询条件,内详!
- 用WMI中的类共享文件夹时,发现被共享的文件夹根本无法访问!
- 怎样在cs中读取html控件里hidden的值?
- 我想在程序中配置IIS,有没有方法可以实现?
- c# winform 增大treeview的同级节点间的距离
- 制作一个鱼鱼桌面秀的东西用C#?用C++/mfc能实现么
where T : Control
{
if (control.InvokeRequired)
{
control.Invoke(action, control);
}
else
{
action(control);
}
}Thread td;void btn_Click(....)
{
string sourceUrl=....;
td=new Thread(url=>{
//你代码中的那段TRY CATCH
//其中包含更改主线程上控件信息的改为使用最上面的静态方法替代。
//exp:
ChangeControlValues(richTextBox1,r=>{r.Text = pageHtml;});
}),sourceUrl);
}
而没必要下载所有
{
static void ChangeControlValues<T>(T control, Action<T> action) where T : Control
{
if (control.InvokeRequired)
{
control.Invoke(action, control);
}
else
{
action(control);
}
}
private void Btn_Click(object sender,EventArgs e)
{
Btn.Enable=false;
Thread td=new Thread(_=>{
try
{
WebClient MyWebClient = new WebClient(); MyWebClient.Credentials = CredentialCache.DefaultCredentials; Byte[] pageData = MyWebClient.DownloadData("http://www.baidu.com"); string pageHtml = Encoding.UTF8.GetString(pageData);
ChangeControlValues(richTextBox1,r=>{r.Text=pageHtml;});
}
catch (WebException webEx)
{
ChangeControlValues(richTextBox1,r=>{r.Text=webEx.Message.ToString();});
}
finally
{
ChangeControlValues(Btn,b=>{b.Enable=true;});
}
},null);
td.Start();
}
}