c# 多线程写入文件问题 现在我开了10个线程收集数据。当收集成功后调用一个 write() 方法专门用于往一个 1.txt文件写入数据。问题如下:这个 write() 方法该怎么写以保证能正确依次地向1.txt 写入数据呢能给出例子代码吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 加锁,lock ,monitor等,看帮助static object obj = new object();private vode write(){lock(obj){//这里写代码}} static CurrentUser currentUser = null;static readonly object lockHelp = new object();public static CurrentUser Instance { get { if (currentUser == null) { lock (lockHelp) { if (currentUser == null) currentUser = new CurrentUser(); } } return currentUser; } } static CurrentUser currentUser = null;static readonly object lockHelp = new object();public static CurrentUser Instance { get { if (currentUser == null) { lock (lockHelp) { if (currentUser == null) currentUser = new CurrentUser(); } } return currentUser; } } 10个线程在收集数据,不是每个线程都写入的,就是收得到数据的线程才写入收不到的就不写入。现在我已经加 lock了, 但是发现会经常有重复性的写入,不知道怎么回事,麻烦高手看下。我在主线程开了10个线程用这个 GetInfo 方法private void GetInfo(object a) { //上边还有份代码太长就不写了 //收集不到数据就退出 if(html.Contains("message error")) { textBox1.Text += "Not Found Data!\r\n"; return; //收集不到就退 } //收集到就写入 lock (obj) { StreamWriter sw = new StreamWriter(myPath, true, System.Text.Encoding.UTF8); sw.WriteLine("<tr>"); foreach (string s in listInfo) { sw.WriteLine("<td>" + s + "</td>"); } sw.WriteLine("</tr>"); sw.Flush(); sw.Close(); } }问题经常发现写入了重复的数据。不知怎么回事。我已确定每个线程处理的数据是不相同的。可是最后发现却经常写入重复的数据。 是静态啊, static object obj = new object(); 何必呢十个线程 十个txt1.txt ~10.txt又安全 又有顺序 这个真得高手了,不一般的httpwebrequest的url问题,图 VB转C#,实在不行了。 从XML导入的dataset如何有选择的导入数据库 关于命令启动控制台应用程序 C#制作UI重绘问题 在网页上如何实现选择多张图片进行叠加显示? 求正则表达式,谢谢! 未将对象引用设置到对象的实例。 关于事务的问题 Socket 循环接收客户端数据 请问下这软件界面的的这图标是button控件做的吗? C#窗体上传图片?
{
lock(obj)
{
//这里写代码
}
}
static readonly object lockHelp = new object();
public static CurrentUser Instance
{
get
{
if (currentUser == null)
{
lock (lockHelp)
{
if (currentUser == null)
currentUser = new CurrentUser();
}
} return currentUser;
}
}
static readonly object lockHelp = new object();
public static CurrentUser Instance
{
get
{
if (currentUser == null)
{
lock (lockHelp)
{
if (currentUser == null)
currentUser = new CurrentUser();
}
} return currentUser;
}
}
现在我已经加 lock了, 但是发现会经常有重复性的写入,不知道怎么回事,麻烦高手看下。
我在主线程开了10个线程用这个 GetInfo 方法
private void GetInfo(object a)
{
//上边还有份代码太长就不写了 //收集不到数据就退出
if(html.Contains("message error"))
{
textBox1.Text += "Not Found Data!\r\n";
return; //收集不到就退
}
//收集到就写入
lock (obj)
{
StreamWriter sw = new StreamWriter(myPath, true, System.Text.Encoding.UTF8);
sw.WriteLine("<tr>");
foreach (string s in listInfo)
{
sw.WriteLine("<td>" + s + "</td>");
}
sw.WriteLine("</tr>");
sw.Flush();
sw.Close();
}
}问题经常发现写入了重复的数据。不知怎么回事。我已确定每个线程处理的数据是不相同的。可是最后发现却经常写入重复的数据。
十个线程 十个txt1.txt ~10.txt又安全 又有顺序