由于出现被放弃的 mutex,等待过程结束

qingtianzhuren 2008-03-19 02:39:30

using System;
using System.Threading;
using System.Data;
class Test
{
// Create a new Mutex. The creating thread does not own the
// Mutex.
private static Mutex mut = new Mutex();
DataTable ds=new DataTable();

static void Main()
{
// Create the threads that will use the protected resource.
for(int i = 0; i < 100; i++)
{
http dd = new http();
//this.chuli = true;

dd.DownFinished += new http.DownFinishedEventHandler(CleanAndFillData2);

dd.DownFinished += new http.DownFinishedEventHandler(FillData);

dd.URL = "http://www.psdncom/odds.aspx?page=" +i.ToString();


try
{
Thread t = new Thread(new ThreadStart(dd.Getit));
t.Start();
Thread.Sleep(1000);
}
catch
{ }

}


// The main thread exits, but the application continues to
// run until all foreground threads have exited.
}

public void FillData(string url, string tempcontent)
{
//这里出问题,提示:由于出现被放弃的 mutex,等待过程结束。
mut.WaitOne();
try
{
lock (this.ds)
{
......

this.ds.Rows.Add(row1.ItemArray);
}


}
catch (Exception ex)
{
Wlogini(ex.ToString());
}
mut.ReleaseMutex();
}
}

class http()
{
........
}

我想抓取一个几个网页的数据,并填到一个表中,但经常报错,也就抓不全了,不知如何改??请不吝赐教
...全文
2066 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dunnice 2009-09-19
  • 打赏
  • 举报
回复
这个问题是由于, 在一个子线程中,获取了mutex,但是在线程退出以前没有调用相应的ReleaseMutex方法,其他线程在等待这个mutex就会出现这个异常.
解决方法:
在获取到mutex后, 一定要调用相应的ReleaseMutex方法
liyoubaidu 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qingtianzhuren 的回复:]
如果不用MUTEX,同一个线程也就是同一个URL的数据将被重置
[/Quote]
up
wangfeng200810 2009-06-23
  • 打赏
  • 举报
回复
没有解决方案!
真相重于对错 2008-03-20
  • 打赏
  • 举报
回复
如果线程终止而未释放 Mutex,则认为该 mutex 已放弃。这是严重的编程错误,因为该 mutex 正在保护的资源可能会处于不一致的状态。在 .NET Framework 2.0 版中,获取该 mutex 的下一个线程中将引发 AbandonedMutexException。

真相重于对错 2008-03-20
  • 打赏
  • 举报
回复
你给的代码不全,例如你的事件如何触发,getiit函数里如何处理, 所以只能给你的提示
qingtianzhuren 2008-03-20
  • 打赏
  • 举报
回复
上楼的哥们,给点实际的吧,别背书啊
alanfoxye 2008-03-19
  • 打赏
  • 举报
回复
用mutex还用lock (this.ds)么?不是很理解意图
qingtianzhuren 2008-03-19
  • 打赏
  • 举报
回复
自己顶下
qingtianzhuren 2008-03-19
  • 打赏
  • 举报
回复
如果不用MUTEX,同一个线程也就是同一个URL的数据将被重置
内容概要:本文介绍了一种基于多目标粒子群算法(MOPSO)的微电网优化调度模型,综合考虑风能、光伏、储能系统、柴油发电机、燃气轮机以及与主电网之间的能量交互等多种分布式能源的协同运行。通过构建以运行成本最小化、碳排放最低化和系统可靠性最优化为目标的多目标优化模型,利用Matlab平台实现MOPSO算法求解,完成对微电网在不同运行场景下的能量管理与调度方案优化。该模型能够有效平衡经济性与环保性之间的关系,适用于含多类型分布式电源的复杂微电网系统,具有较强的工程应用价值和科研参考意义; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事微电网、智能电网、综合能源系统、可再生能源集成与优化调度等领域研究的专业人士; 使用场景及目标:①用于多能源耦合微电网系统的协同优化调度研究;②支持多目标智能优化算法在能源系统中的建模与求解实践,帮助用户掌握MOPSO在实际工程问题中的应用方法;③为学术论文复现、毕业设计、科研项目开发提供完整的代码实例与技术支撑; 阅读建议:建议读者结合Matlab代码与理论文档,深入理解目标函数构建、约束条件处理及Pareto最优解集生成机制,重点关注算法参数设置、多目标权衡分析与结果可视化,并可通过调整能源配置或引入新约束进行二次开发与创新研究。

111,129

社区成员

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

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

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