Socket使用线程循环发送文件解决办法

Socket使用线程循环发送文件
在使用线程循环发送文件的过程中,客户端总会报  “目标数组的长度不足,无法复制集合中的所有项。请检查数组索引和长度”这个错误,但是在单独发送同一文件的时候并没有出现这种错误。请问大神们对于循环重复发送同一文件的事情是怎么解决的。
发送端部分代码如下:

        private void btnSendFile_Click(object sender, EventArgs e)
        {
            OpenFileDialog fd = new OpenFileDialog();
            if (fd.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
            {
                return;
            }
                if (clientSocket == null)
                {
                    clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    clientSocket.Connect(IPAddress.Parse("10.108.86.244"), 5000);
                    NetworkStream netStream = new NetworkStream(clientSocket);
                    tcpPacketServiceClient = new NetPacketTcpService(netStream);
                }
                 while(true)
                {
                //在新的线程中完成文件发送
                Thread thread = new Thread(delegate() //采用C#2.0匿名方法语法
                {
                    tcpPacketServiceClient.SendFile(fd.FileName);

                    Invoke(new UpdateViewWithMsgHandler(UpdateView), "我发送了文件:" + new FileInfo(fd.FileName).Name);
                    //在窗口界面所在的线程运行委托指向的方法,避免跨线程访问UI问题                                
                });
                    thread.IsBackground = true;
                    thread.Start();
                    Thread.Sleep(100);
                    if (thread.IsAlive)
                    {
                        thread.Abort();
                    }
               }
        }

接收端部分代码如下:

                    NetFile f = tcpPacketServiceSvr.ParseFile((Byte[])packet.Data);
                    msglist += "\r\n接收了对方发送的文件:"+f.FileName;
                    FileStream fs = null;
                    try
                    {
                        string fname = Application.StartupPath+"\\"+f.FileName;
                        fs = new FileStream(fname, FileMode.Create);