zoukankan      html  css  js  c++  java
  • 在多线程环境下使用HttpWebRequest或者调用Web Service

    using System;
    using System.Diagnostics;
    using System.Threading;
    using System.Net;

    namespace MultiThread
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    Thread thread = new Thread(new ThreadStart(MakeThread));
    thread.Start();
    Console.ReadLine();
    }

    private static int count = 30;
    private static int max = 10;
    private static int x = 0;
    private static int y = 0;

    private static void MakeThread()
    {
    while (x < count)
    {
    if (y < max)
    {
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create ("http://www.google.com");
    req.Timeout = 100000;
    ThreadPool.QueueUserWorkItem(new WaitCallback(MakeWebRequest), req);
    Interlocked.Increment(ref y);
    }
    Thread.Sleep(0);
    }
    Console.WriteLine("=======================================");
    }

    private static void MakeWebRequest (object obj)
    {
    HttpWebRequest req = obj as HttpWebRequest;
    HttpWebResponse res = null;
    try
    {
    Console.WriteLine ("\nConnecting to " + req.RequestUri);
    res = (HttpWebResponse) req.GetResponse ();
    Console.WriteLine("[" + AppDomain.GetCurrentThreadId() + "] ContentLength:" + res.ContentLength);
    Console.WriteLine ("Connected.\n");
    }
    catch (Exception e)
    {
    if (res != null)
    {
    res.Close ();
    Interlocked.Increment(ref x);
    Interlocked.Decrement(ref y);
    res = null;
    }
    Console.WriteLine ("Source : " + e.Source);
    Console.WriteLine ("Message : " + e.Message);
    Console.WriteLine(e.ToString());
    Debug.WriteLine(e.ToString());
    }
    finally
    {
    if (res != null)
    {
    res.Close ();
    Interlocked.Increment(ref x);
    Interlocked.Decrement(ref y);
    }
    }
    }
    }
    }
  • 相关阅读:
    GmSSL 与 OpenSSL 共存的安装方法
    爬虫之ssh证书警告错误
    逆向so文件调试工具IDA基础知识点
    frida- registernatives获取so层动态注册函数
    绑定方法与非绑定方法, 反射
    Elk stack安装部署
    类的继承和组合
    安装部署kafka和zookeeper集群(三节点)
    ELK stack 生产问题
    Elasticsearch删除数据操作,你必须知道的一些坑
  • 原文地址:https://www.cnblogs.com/kokoliu/p/475911.html
Copyright © 2011-2022 走看看