我有一个我在循环中调用的Web服务。
我也称它为异步。
我应该在每次通话后关闭()它还是让它打开?
如果我反复打开()并关闭网络服务
,我担心处理时间会更长和: 内存积累(某些地方)如果不关闭它?
我正在使用C#。
这是我的代码:
private void UploadToCloud()
{
while (true)
{
try
{
lock (syncNewMotion)
{
Monitor.Wait(syncNewMotion);
}
for (ActiveCamIndex = 0; ActiveCamIndex < 4; ActiveCamIndex++)
{
MotionFrame motion = GetNextUpload();
if (motion != null)
{
request.UploadMotion(motion.Frame, Shared.Alias, motion.camIndex, motion.MessageLog); // I am call non -async here
//because if I do this:
//request.UploadMotionAsync(motion.Frame, Shared.Alias, motion.camIndex, motion.MessageLog, Guid.NewGuid().ToString());
//I am worried about the router being overloaded.
}
}
}
catch (Exception ex)
{
request.Abort();
}
}
}
一旦我知道我得到了一些新数据我称之为:
public void SetCurrentFrame(byte[] jpegData, Int16 camIndex, byte[] messageLog, Int64 timestamp)
{
CurrentMotionFrame.Timestamp = timestamp;
CurrentMotionFrame.MessageLog = messageLog;
CurrentMotionFrame.camIndex = camIndex;
CurrentMotionFrame.Frame = jpegData;
switch (camIndex)
{
case 0:
if (motionQueue1.Count < 160)
{
motionQueue1.Enqueue(CurrentMotionFrame);
}
break;
case 1:
if (motionQueue2.Count < 160)
{
motionQueue2.Enqueue(CurrentMotionFrame);
}
break;
case 2:
if (motionQueue3.Count < 160)
{
motionQueue3.Enqueue(CurrentMotionFrame);
}
break;
case 3:
if (motionQueue4.Count < 160)
{
motionQueue4.Enqueue(CurrentMotionFrame);
}
break;
}
NotifyNewUpload();
}
我用这个开始循环:
Thread thUpload = new Thread(UploadToCloud);
thUpload.Start();
我很可能会做一整个错误目录,但是长期以来一直在研究这个项目,很难退一步。
欢迎任何建议/批评
由于