您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> 多线程里如何写入同1个文档数据

多线程里如何写入同1个文档数据

来源:网络整理     时间:2016/5/11 17:10:44     关键词:如何写,多线程

关于网友提出的“多线程里如何写入同1个文档数据”问题疑问,本网通过在网上对“多线程里如何写入同1个文档数据”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:多线程里如何写入同1个文档数据
描述:

多线程里如何写入同1个文档数据?
public delegate void MyInvoke(string str);
        private void btnStartThread_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(new ThreadStart(DoWord));
            thread.Start();
        }
        public void DoWord()
        {           
            MyInvoke mi = new MyInvoke(SetTxt);
            BeginInvoke(mi,new object[]{"abc"});               
        }
        public void SetTxt(string str)
        {
            //把str写入1.txt  文档里
        }
这样可以么???? 这个不会导致什么错误吧,如果我要更新Listview呢??


解决方案1:

引用 2 楼 wowfiowow 的回复:
Quote: 引用 1 楼 skyandcode 的回复:

当然会有问题。通常文件都是共享读的,也就是多个线程可以同时读取文件。如果有一个线程在写,那么其它线程既不能读也不能写。如果要测试,你可以开一个线程打开文件写,然后Sleep(10000),同时让另一个线程去读或者写,就会出现你想看到的异常了。

哪如果这样
       private void btnStartThread_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(new ThreadStart(DoWord));
            thread.Start();
        }
        public void DoWord()
        {           
            this.BeginInvoke(new Action(() => {  写入数据到1.txt  })); 
        }
这样吧写入action事件委托给主线程去完成,可以么?否则要怎么写?

主线程只有一个,用于界面交互,如果你让主线程去做这个任务,那么界面就会卡住,通常我们会设计多线程去避免主线程卡住,而 不会反而把任务交给主线程去处理。
如果你要防止并发写文件,也就是需要排队,只有这个线程写完,其它线程才可以写。这就是线程同步,c#里有很多种方法实现线程同步,这个你自己学习学习。
以上介绍了“多线程里如何写入同1个文档数据”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1030289.html

相关图片

相关文章