在一个线程中怎么访问父进程之间的控件

txt_ly 2007-10-29 03:42:01
public void Start( queryString queryStringModel)
{
_queryStringModel = queryStringModel;
string url = _queryStringModel.GetQueryString();
thread = new Thread(delegate()//建立一个线程
{
GetCompanyInfo(url); //在线程调用该方法

});
thread.Name = "HzxCrmCustSearch";
thread.Start();
}


private void GetCompanyInfo(string url)
{
//要调用主进程中的progressBar1控件,我通过全局变量来访问报错
if (_HasSearchCount < 1)
{
// class="red sm">519<
string countPattern = "(class=\"red sm\">)\\d+(?=<)";
Match countMatch = Regex.Match(html, countPattern);
_pBar.Visible = true;//_pBar是主进程的progressBar1控件
_pBar.Minimum = 1;
_pBar.Maximum = Convert.ToInt32(countMatch.Value);
_pBar.Step = 1;
}
}
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IThurricane 2007-10-29
  • 打赏
  • 举报
回复
使用Invoke方法更新UI线程
TonyTonyQ 2007-10-29
  • 打赏
  • 举报
回复
给个例子:
在Form里新增个方法和一个委托作为回调:


delegate void AppendMessageCallback(string name, string text, DateTime time);

public void AppendMessage(string name, string message, DateTime time)
{
if (this.InvokeRequired)
{
AppendMessageCallback d = new AppendMessageCallback(AppendMessage);
this.Invoke(d, new object[] { name, message });
}
else
{
rtxtMessage.AppendText(string.Format("{0} {1}\r\n{2}", name, time.ToString("yyyy-MM-dd HH:mm:ss"), message));
rtxtMessage.AppendText(ConstantValue.MessageBoundaryString);
rtxtMessage.ScrollToCaret();
}
}



然后,每个线程都通过调用 Form 实例的 AppendMessage 方法操作 RichTextBox 控件。

txt_ly 2007-10-29
  • 打赏
  • 举报
回复
自己顶一个,也就是怎么在多线程程序中实现在线程中访问窗体上的控件
txt_ly 2007-10-29
  • 打赏
  • 举报
回复
有什么好的方法

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧