Thread.Sleep为什么没执行

gongshf 2017-10-27 03:57:43
程序是微信公众号模板消息发送,进度条显示进度。
for (int i = 0; i < arrl; i++)
{
//省略部分代码没贴出
string result = GetResponseJsonData(allsenddata, url); 向微信服务器发送内容

this.context.Application["progresslsdm"] = i;
Thread.Sleep(2000);
}

当没有GetResponseJsonData(allsenddata, url);这行时,程序正常显示进度条进度,但加了这段发布消息的程序后,Thread.Sleep(2000)就没执行,整个循环一下子就结束了,没有执行Thread.Sleep,消息也正常发送到微信服务器,但是进度条无效了。

public static string GetResponseJsonData(string JSONData, string Url)
{
string strResult = "";
HttpWebRequest request = null;
HttpWebResponse response = null;
Stream reqstream = null;

try
{
byte[] bytes = Encoding.UTF8.GetBytes(JSONData);
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentLength = bytes.Length;
request.ContentType = "application/json";
reqstream = request.GetRequestStream();
reqstream.Write(bytes, 0, bytes.Length);
reqstream.Close();

//声明一个HttpWebRequest请求
request.Timeout = 90000;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.UTF8;

StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
streamReader.Close();
streamReceive.Dispose();
streamReader.Dispose();
}
catch (Exception e)
{
}
finally
{
//关闭连接和流
if (response != null)
{
response.Close();
}
if (request != null)
{
request.Abort();
}
}

return strResult;
}


请各位大神帮忙找找原因。
...全文
569 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongshf 2017-10-28
  • 打赏
  • 举报
回复
今天我加了日志查看,感觉是同步/异步,或者是多线程造成的问题。当调用GetResponseJsonData(allsenddata, url)向微信服务器发送内容时要等好几秒才收到微信服务器返回的数据,而在这个等待的过程中有些语句也在等待,但是for循环并没有等待,而是正常在执行下一个循环,直到所有循环都完成,页面提示完成,但实际上微信服务器的发送并没有结束,没有返回数据包,要过好几秒之后,等微信服务器发送完成才执行其它语句。 本来是希望向微信服务器发送一次,等返回数据包再运行下一个循环,但实际上循环并没有等待返回数据包马上就开始下一次循环了。不知道这个问题怎么解决?
gongshf 2017-10-28
  • 打赏
  • 举报
回复
没人知道吗?
_晨阳_ 2017-10-28
  • 打赏
  • 举报
回复
可以使用多线程。。。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧