当前位置:编程学习 > C#/ASP.NET >>

万分火急

如题。。具体希望贴出代码。。使用多线程移动一个文件到另一个地方。。谢谢 --------------------编程问答-------------------- 你是说另开一个线程吧?


       static void Move(Object args)
        {
            string[] files = (string[])args;
            File.Move(files[0], files[1]);
        }


调用::
            string[] files={"C:\\a.txt","C:\\b.txt"};

            Thread t = new Thread(new ParameterizedThreadStart(Move));
            t.Start(files); --------------------编程问答-------------------- new Thread((ThreadStart)delegate { A(); }).Start();
static void A()
  {
  File.Move("","");
  }
new Thread((ThreadStart)delegate
  {File.Move("","");
    }).Start();
--------------------编程问答-------------------- 是用线程将一个文件复制到另一个文件吧?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
namespace Text
{
    public class CopyThread
    {
        private CopyObject copyObjects;
        public CopyObject CopyObjects
        {
            get
            { 
                return copyObjects;
            }
            set
            { 
                copyObjects = value;
            }
        }

        public void Run()
        {
            Thread ThRead = new Thread(new ParameterizedThreadStart(CopyEvents_ReadEvent));
            ThRead.Start(CopyObjects);
        }

        //复制写的方法
        void CopyEvents_WriteEvent(object COB)
        {
            CopyObject obj = (CopyObject)COB;
            using (FileStream fs = new FileStream(obj.Target_FileName, FileMode.Append, FileAccess.Write, FileShare.Write))
            {
                fs.Write(obj.File_bytes, 0, obj.File_bytes.Length);
                fs.Close();
            }
        }

        //复制读的方法
        void CopyEvents_ReadEvent(object COB)
        {
            CopyObject obj = (CopyObject)COB;
            using (FileStream fs = new FileStream(obj.Filename, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                long len = fs.Length;
                //定义开始的长度为0字节
                long wLen = 0;
                //定义一次性读取1048576个字节
                long bytLen = 1048576000;
                while (wLen < len)
                {
                    //Position规定他是一个从0开始的索引
                    long pos = fs.Position;
                    wLen += bytLen;
                    if (wLen > len)
                    {
                        bytLen = len - pos;
                        wLen = len;
                    }
                    byte[] byt = new byte[bytLen];
                    fs.Read(byt, 0, byt.Length);
                    fs.Seek(wLen, SeekOrigin.Begin);
                    obj.File_bytes = byt;

                    Thread ThWrite = new Thread(new ParameterizedThreadStart(CopyEvents_WriteEvent));
                    ThWrite.Start(obj);
                }
                fs.Close();
            }
        }
    }
}
--------------------编程问答-------------------- using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
namespace Text
{
    //定义了一个读写委托。
    delegate void Read(CopyObject obj);
    delegate void Write(CopyObject obj); 
    public class CopyEvents
    {
        private event Read ReadEvent;
        private event Write WriteEvent;
        //定义一个复制的对象
        public CopyObject copyObjects;
        public CopyObject CopyObjects
        {
            get
            {
                return copyObjects;
            }
            set
            {
                copyObjects = value;
            }
        }

        //定义一个Run方法
        public void Run()
        {
            ReadEvent += new Read(CopyEvents_ReadEvent);
            WriteEvent += new Write(CopyEvents_WriteEvent);
            Thread Th = new Thread(new ThreadStart(Execute_Copy));
            Th.Start();
        }

        //定义一个执行复制的方法
        public void Execute_Copy()
        {
            ReadEvent(CopyObjects);
        }

        //定义一个执行复制写的事件
        void CopyEvents_WriteEvent(CopyObject obj)
        {
            using (FileStream fs = new FileStream(obj.Target_FileName, FileMode.Append, FileAccess.Write, FileShare.Write))
            {
                fs.Write(obj.File_bytes,0,obj.File_bytes.Length);
                fs.Close();
            }
        }

        //定义一个执行复制读的事件
        void CopyEvents_ReadEvent(CopyObject obj)
        {
            using (FileStream fs = new FileStream(obj.Filename, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                long len = fs.Length;
                //定义开始的长度为0字节
                long wLen = 0;
                //定义一次性读取1048576个字节
                long bytLen = 1048576000;
                while (wLen < len)
                {
                    long pos = fs.Position;
                    wLen += bytLen;
                    if (wLen > len)
                    {
                        bytLen = len - pos;
                        wLen = len;
                    }
                    byte[] byt = new byte[bytLen];
                    fs.Read(byt, 0, byt.Length);
                    fs.Seek(wLen, SeekOrigin.Begin);
                    obj.File_bytes = byt;
                    WriteEvent(obj);
                }
                fs.Close();
            }
        }
    }

    public class CopyObject
    {
        //定义开始的文件字节大小
        private byte[] file_bytes;

        public byte[] File_bytes
        {
            get 
            { 
                return file_bytes;
            }
            set 
            { 
                file_bytes = value; 
            }
        }
        private string filename;

        public string Filename
        {
            get 
            { 
                return filename;
            }
            set 
            { 
                filename = value; 
            }
        }
        private string target_FileName;

        public string Target_FileName
        {
            get 
            { 
                return target_FileName;
            }
            set 
            { 
                target_FileName = value;
            }
        }
    }
}
--------------------编程问答-------------------- using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
namespace Text
{
    public class test
    {
        public static void Main()
        {
            CopyObject CO = new CopyObject();
            CO.Filename = "A.txt";
            CO.Target_FileName = "B.txt";
            test t = new test();
            t.Copy(CO);
        }
        private void Copy(CopyObject Obj)
        {
            //用事件
            //CopyEvents CE = new CopyEvents();
            //CE.CopyObjects = Obj;
            //CE.Run();

            //用线程
            CopyThread CT = new CopyThread();
            CT.CopyObjects = Obj;
            CT.Run();
        } 
    }
}
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,