public RequestSendFileEventArgs(
     TraFransfersFileStart traFransfersFileStart,
     IPEndPoint remoteIP)
     : base()
 {
     _traFransfersFileStart = traFransfersFileStart;
     _remoteIP = remoteIP;
 }
        private void SendFileOutTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            lock (SendFileOutTimeLock)
            {
                try
                {
                    List<SendFileManager> lsManager = new List<SendFileManager>();
                    foreach (SendFileManager item in SendFileManagerList.Values)
                    {
                        lsManager.Add(item);
                    }

                    foreach (SendFileManager item in lsManager)
                    {
                        if (item.SendFileOutTime > 5)
                        {
                            //OnFileSendRefuse(new FileSendEventArgs(item));//取消当前的发送
                            if (SendFileManagerList.ContainsKey(item.MD5))
                            {
                                //SendFileManagerList.Remove(item.MD5);
                                //Send((int)Command.RequestCancelSendFile, item.MD5);//告诉对方我取消了发送
                                //item.Dispose();
                                 TraFransfersFileStart ts = new TraFransfersFileStart(
                                    item.MD5,
                                    item.Name,
                                    Icon.ExtractAssociatedIcon(item.FileName).ToBitmap(),
                                    item.Length,
                                    item.PartCount,
                                    item.PartSize);
                                Send((int)Command.RequestSendFile, ts);
                                item.SendFileOutTime = 0;
                            }
                        }

                        if (item.SendFileOutTime != -1)
                        {
                            item.SendFileOutTime++;
                        }
                    }
                }
                catch (Exception)
                {

                }
            }
        }
        //public void SendFile(string fileName)
        //{
        //    SendFileManager sendFileManager = new SendFileManager(fileName);
        //    if (SendFileManagerList.ContainsKey(sendFileManager.MD5))
        //    {
        //        throw new Exception(string.Format(
        //            "文件 {0} 正在发送,不能发送重复的文件。",
        //            fileName));
        //    }
        //    else
        //    {
        //        SendFileManagerList.Add(sendFileManager.MD5, sendFileManager);
        //        sendFileManager.ReadFileBuffer += new ReadFileBufferEventHandler(
        //            SendFileManageReadFileBuffer);
        //        TraFransfersFileStart ts = new TraFransfersFileStart(
        //            sendFileManager.MD5,
        //            sendFileManager.Name,
        //            Icon.ExtractAssociatedIcon(fileName).ToBitmap(),
        //            sendFileManager.Length,
        //            sendFileManager.PartCount,
        //            sendFileManager.PartSize);
        //        Send((int)Command.RequestSendFile, ts);
        //    }
        //}
        public void SendFile(SendFileManager sendFileManager, Image image)
        {
            if (SendFileManagerList.ContainsKey(sendFileManager.MD5))
            {
                throw new Exception(string.Format(
                    "文件 {0} 正在发送,不能发送重复的文件。",
                    sendFileManager.FileName));
            }
            else
            {
                SendFileManagerList.Add(sendFileManager.MD5, sendFileManager);
                sendFileManager.ReadFileBuffer += new ReadFileBufferEventHandler(
                    SendFileManageReadFileBuffer);

                TraFransfersFileStart ts = new TraFransfersFileStart(
                    sendFileManager.MD5,
                    sendFileManager.Name,
                    image,
                    sendFileManager.Length,
                    sendFileManager.PartCount,
                    sendFileManager.PartSize);
                Send((int)Command.RequestSendFile, ts);
                //文件接收超时管理
                if (SendFileOutTimer.Enabled == false)
                {
                    SendFileOutTimer.Enabled = true;
                }
            }
        }
 private void OnStartRecieve(
     TraFransfersFileStart traFransfersFileStart,
     IPEndPoint remoteEP)
 {
     OnRequestSendFile(
         new RequestSendFileEventArgs(
         traFransfersFileStart,
         remoteEP));
 }