Quellcode durchsuchen

设置 自定义超时时间问题 代码处理

zackhua vor 6 Monaten
Ursprung
Commit
8ca599630e
2 geänderte Dateien mit 26 neuen und 27 gelöschten Zeilen
  1. 19 22
      ZLPlugin_LisPacs_MR/SocketClient.cs
  2. 7 5
      ZLPlugin_LisPacs_MR/clsPlugin.cs

+ 19 - 22
ZLPlugin_LisPacs_MR/SocketClient.cs

@@ -130,37 +130,34 @@ namespace ZLPlugin_LisPacs_MR
         /// <summary>
         /// 循环接收消息  直到有数据
         /// </summary>
-        public void WhileReceive()
+        public void WhileReceive(int waittingdate)
         {
             byte[] buffer = new byte[1024*10];
             int receivedBytes = 0;
             var begintime = DateTime.Now.Ticks;
             TimeSpan timeSpan = new TimeSpan();
             bool flag = true;
-            try
+            Log.Info("WhileReceive 开始接收消息》》");
+            while (flag)
             {
-                Log.Info("WhileReceive 开始接收消息》》");
-                while (flag)
+                Log.Info("flag=" + flag);
+                // 只循环 20 秒  
+                timeSpan = new TimeSpan(DateTime.Now.Ticks - begintime);
+                Log.Info("timeSpan=" + timeSpan);
+                if (timeSpan.TotalSeconds > waittingdate)
                 {
-                    // 只循环 20 秒  
-                    timeSpan = new TimeSpan(DateTime.Now.Ticks - begintime);
-                    if (timeSpan.TotalSeconds > 20)
-                    {
-                        flag = false;
-                    }
-                    //传递一个byte数组,用于接收数据。length表示接收了多少字节的数据
-                    receivedBytes = _ClientSocket.Receive(buffer);
-                    if (receivedBytes > 0)
-                    {
-                        Message = Encoding.Default.GetString(buffer, 0, receivedBytes);//只将接收到的数据进行转化
-                        Log.Info("WhileReceive 返回消息》》"+Message);
-                        break;
-                    }
+
+                    flag = false;
+                    Log.Info("flag=" + flag);
+                }
+                //传递一个byte数组,用于接收数据。length表示接收了多少字节的数据
+                receivedBytes = _ClientSocket.Receive(buffer);
+                if (receivedBytes > 0)
+                {
+                    Message = Encoding.Default.GetString(buffer, 0, receivedBytes);//只将接收到的数据进行转化
+                    Log.Info("WhileReceive 返回消息》》"+Message);
+                    break;
                 }
-            }
-            catch (Exception ex)
-            {
-                Log.Info("接收消息时报错"+ex.Message);
             }
         }
 

+ 7 - 5
ZLPlugin_LisPacs_MR/clsPlugin.cs

@@ -163,7 +163,7 @@ namespace ZLPlugin_LisPacs_MR
                 Log.Info("初始化完成!");
                 try
                 {
-                    clientSend.WhileReceive();
+                    clientSend.WhileReceive(waittingdate);
                 }
                 catch (Exception e)
                 {
@@ -176,7 +176,7 @@ namespace ZLPlugin_LisPacs_MR
                     if (rex.ResultCode == 2)//有互认
                     {
                         
-                        clientSend.WhileReceive();
+                        clientSend.WhileReceive(waittingdate);
                         MessageBox.Show("回传数据至his!");
                         //SocketClient.Message = null;
                         return SaveData(waittingdate, lngPatientID, lngClinicID, listlis, listpacs, 1);
@@ -336,14 +336,15 @@ namespace ZLPlugin_LisPacs_MR
                 string json = Tools.RecordsetToJson(rd);
                 Log.Info("save发送json ===" + json);
                 socketClient.Send(json);
-                
+                Log.Info("waittingdate=" + waittingdate);
                 try
                 {
-                    socketClient.WhileReceive();
+                    socketClient.WhileReceive(waittingdate);
                 }
                 catch (Exception e)
                 {
                     Log.Info("接收失败!"+ e.Message);
+                    return false;
                 }
                     
                 Log.Info("退出循环!");
@@ -355,7 +356,7 @@ namespace ZLPlugin_LisPacs_MR
                     rex = JSON.JsonToObject<ResultsEx>(Tools.FormatStr(SocketClient.Message), Encoding.UTF8);
                     if (rex.ResultCode == 2)//有互认
                     {
-                        socketClient.WhileReceive();
+                        socketClient.WhileReceive(waittingdate);
                         MessageBox.Show("回传数据至his!");
                         SaveData(waittingdate, lngPatientID, lngClinicID, listlis, listpacs, -1);
                         //保存开单项目
@@ -387,6 +388,7 @@ namespace ZLPlugin_LisPacs_MR
                 MessageBox.Show(ex.Message, "中联软件", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                 Log.Info(ex.Message);
                 Log.Info(ex.StackTrace);
+                return false;
             }
            /* if (socketClient != null)
             {