求C# 线程同步的写法。lock怎么用? 有一百个网站,建十个线程,同步打开这一百个网站不能打开多次),(如何实现,给提示? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 lock(一个引用类型实例){ // 同步的代码} public void open(string str) { lock (str) { webBrowser1.Navigate(str); } }这样可以吗? str 不合适,最好定义个全局变量private static object obj = new object();public void open(string str) { lock (obj) { webBrowser1.Navigate(str); } } private object someLock = new object();public void someMethod1( .... ) { lock (someLock) { //your business... }}根据方法业务上的含义不同, 可以某几个方法要互相排斥, 那么他们就lock同一个object. 不是互相排斥的方法, lock不同的object.这样可以做到尽可能的线程运行. (比无脑的lock(this)要好) LOCK是同步你要的是并发吧。并发打开,就不能做到同步,同步的话性能大大降低了,你可以先把100个站分配一下,然后给10条线程,这样就不会重复打开了。 不要直接用线程访问网站,而是先把100个网址加入一个队列中,假设是LinkedList<string> lstUrls;然后每个线程从lstUrls中取出url操作:string strUrl;lock(lstUrls){ strUrl=lstUrls.First.Value; lstUrls.RemoveFirst();}...//这里可以操作strUrl了, 9楼忘了判断lstUrls是否空,如果没有内容,线程可以直接返回,如果网站数目不定而且动态增加,用lock就不行了,需要用信号量, WPF中 自定义ListViewItem中的CellTemplate的问题 C# 接收拖放至窗体的文件路径 注册表修改 数库连接出的问题 那位帮忙下 在线 谢谢 求助:安装项目,出错! 简单问题 菜鸟---==求大神~~~ 解决!!! vs2005 DataGridview 读取XML 文件问题 :提示无法创建字段 students 的子列表。 dev的 gridcontrol(里面是gridview)控件,提示信息ErrorText被隐藏 一个大Bug!!! 性能计数器的问题 用什么方法可以实时的把基类转换成子类
{
// 同步的代码
}
{
lock (str)
{
webBrowser1.Navigate(str);
}
}
这样可以吗?
private static object obj = new object();public void open(string str)
{
lock (obj)
{
webBrowser1.Navigate(str);
}
}
private object someLock = new object();public void someMethod1( .... ) {
lock (someLock) {
//your business...
}
}根据方法业务上的含义不同, 可以某几个方法要互相排斥, 那么他们就lock同一个object. 不是互相排斥的方法, lock不同的object.这样可以做到尽可能的线程运行. (比无脑的lock(this)要好)
并发打开,就不能做到同步,同步的话性能大大降低了,
你可以先把100个站分配一下,然后给10条线程,这样就不会重复打开了。
lock(lstUrls)
{
strUrl=lstUrls.First.Value;
lstUrls.RemoveFirst();
}...//这里可以操作strUrl了,