代码之家  ›  专栏  ›  技术社区  ›  RashidInman

一次发送多个帖子

  •  0
  • RashidInman  · 技术社区  · 10 年前

    我使用SQL查询从数据库中选择数据,并将返回的结果存储在 Dictionary<string, string> 然后我使用 foreach 循环和 Server.UrlEncode 要创建 Querystring 像这样

    foreach (var onetwo in privatedictionary) 
        dataToPost = onetwo.Key+"="+Server.UrlEncode(onetwo.Value)+"&";
    

    一旦数据被编译成 dataToPost 我使用 HttpWebRequest 发送数据

    HttpWebRequest wbrq = (HttpWebRequest)WebRequest.Create("www.sitetohit.com");
    {
      using (StreamWriter sw = new StreamWriter(wbrq.GetRequestStream()))
      {
        sw.Write(dataToPost);
      }
    }
    

    使用什么方法 Visual Studio 2015 一次发送多个帖子?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Bewar Salah    10 年前

    有多种方法,我体验到的最好的方法是波纹管:

    Parallel.ForEach(privatedictionary, (dataToPost) =>
            {
                HttpWebRequest wbrq = (HttpWebRequest)WebRequest.Create("www.sitetohit.com");
                {
                    using (StreamWriter sw = new StreamWriter(wbrq.GetRequestStream()))
                    {
                        sw.Write(dataToPost);
                    }
                }
            });
    

    或者:

    foreach (var dataToPost in privatedictionary)
            {
                Task.Run(async () =>
                {
                    Foo foo = new Foo();
                    await foo.BarAsync(dataToPost);
                });
            }
    
      //Asynchronous Handling
      public class Foo
    {
        public async Task BarAsync(string dataToPost)
        {
            HttpWebRequest wbrq = (HttpWebRequest)WebRequest.Create("www.sitetohit.com");
            {
                using (StreamWriter sw = new StreamWriter(wbrq.GetRequestStream()))
                {
                    await sw.WriteAsync(dataToPost);
                }
            }
        }
    }
    

    您可以使用:

    Parallel.ForEach(privatedictionary, (onetwo) =>
            {
                var dataToPost = onetwo.Key + "=" + Server.UrlEncode(onetwo.Value) + "&";
                HttpWebRequest wbrq = (HttpWebRequest)WebRequest.Create("www.sitetohit.com");
                {
                    using (StreamWriter sw = new StreamWriter(wbrq.GetRequestStream()))
                    {
                        sw.Write(dataToPost);
                    }
                }
            });