private async void ReceiveImage(TcpPackage receivePackage)
        {
            var udpConfigPackage = receivePackage.Config;
            var remote           = udpConfigPackage.ReceiveEndPoint.Split("|");
            var remotePoint      = new IPEndPoint(IPAddress.Parse(remote[0]), Convert.ToInt32(remote[1]));

            using (var udpClient = await new UdpClientManager().CreateUdpReceiveClientAsync(12000))
            {
                var udpPackageManager = new UdpPackageManager(8);

                while (true)
                {
                    var buffer = (await udpClient.ReceiveAsync()).Buffer;
                    //var buffer = udpClient.Receive(ref remotePoint);
                    ushort[] lostSlice;
                    bool     transferFinished;
                    if (udpPackageManager.CollectSlices(buffer, out lostSlice, out transferFinished))
                    {
                        if (!transferFinished)
                        {
                            // 只接收了一块数据就进行了显示操作
                            // 图片大小限定: 10M
                            // 解决方案: 将图片缓存到本地, 再读取到程序中
                            // 缓存方案: 像文件一样按块写入本地, 最后再进行调用
                            // 缓存地址: 软件安装目录
                            var buff = udpPackageManager.SliceToBlock(udpPackageManager.GetSliceList(), 1).Result;
                            if (buff != null)
                            {
                                Dispatcher.Invoke(() =>
                                {
                                    var bitmap = ImageHelper.BytesToBitmapImage(buff);
                                    ChatArea.Children.Add(new ReceiveControl(receivePackage, bitmap));
                                });
                                break;
                            }
                        }
                        else
                        {
                            break;
                        }

                        //Thread.Sleep(10);
                    }
                }
                //MessageBox.Show("Client回收");
            }
            //udpClient.Client.Close(5000);
        }
        async Task SendImage(string fileName, TcpPackage package)
        {
            using (var _sendUdpImageClient = new UdpClientManager())
            {
                // 创建Udp客户端
                //await _sendUdpImageClient.CreateUdpSendClientAsync(new IPEndPoint(IPAddress.Loopback, _sendUdpPort));
                await _sendUdpImageClient.CreateUdpSendClientAsync(new IPEndPoint(IPAddress.Loopback, new Random().Next(40000, 50000)));

                var imagePackage = new TcpPackage()
                {
                    OpCode      = LbChatWith.Content.Equals("All") ? OpCode.All : OpCode.Single,
                    MessageType = MessageType.Image,
                    LocalName   = TbUserName.Text,
                    RemoteName  = LbChatWith.Content.ToString()
                };

                #region Tcp校验 丢弃
                //_sendImageTcpClient = new EasyClient<TextPackageInfo>(new LinePipelineFilter(), options).AsClient();
                //var connected = await _sendImageTcpClient.ConnectAsync(new IPEndPoint(IPAddress.Loopback, 8888));

                //var msg = imagePackage.ToString();

                //await _sendImageTcpClient.SendAsync(Encoding.UTF8.GetBytes(msg));

                //UdpConfigPackage package = null;
                //while (true)
                //{
                //    var data = await _sendImageTcpClient.ReceiveAsync();
                //    package = TcpPackage.JsonToPackage(data.Text).Config;

                //    if (package != null)
                //    {
                //        break;
                //    }

                //    await Task.Delay(100);
                //}
                #endregion

                var point = package.Config.ReceiveEndPoint.Split("|");
                if (!_sendUdpImageClient.Client.Connected)
                {
                    _sendUdpImageClient.Connect(IPAddress.Parse(point[0]), Convert.ToInt32(point[1]));
                }

                // 发送Image
                var packageManager = new UdpPackageManager(8);
                var first          = packageManager.StartBlock(1);
                await _sendUdpImageClient.SendAsync(first, first.Length);

                while (true)
                {
                    var imageBuffer = await packageManager.ReadFileToBlock(fileName);

                    //var imageBuffer = packageManager.ImageToBytes(fileName);
                    if (imageBuffer == null)
                    {
                        break;
                    }

                    var packages = await packageManager.BlockToSlice(imageBuffer, 1);

                    while (packages.Length() > 0)
                    {
                        var pBuffer = await packages.DequeueAsync();

                        await _sendUdpImageClient.SendAsync(pBuffer, pBuffer.Length);

                        await Task.Delay(1);
                    }
                }

                var end = packageManager.EndBlock(1);
                await _sendUdpImageClient.SendAsync(end, end.Length);
            }
        }