Как открыть карточку контакта в Android по ID

У меня есть программа, в которой мне нужно создать большое количество папок на внешнем сайте sharepoint (external означает, что я не могу использовать объектную модель sharepoint). Для этого хорошо работают веб-запросы, но простое выполнение их по одному (отправка запроса, ожидание ответа, повторение) довольно медленное. Я решил сделать запросы многопоточными, чтобы ускорить процесс. Программа значительно ускорилась, но по прошествии некоторого времени (1-2 минуты или около того) начинают возникать исключения параллелизма.

Код ниже, это лучший способ сделать это?

Semaphore Lock = new Semaphore(10, 10);
List<string> folderPathList = new List<string>();
//folderPathList populated

foreach (string folderPath in folderPathList)
{
    Lock.WaitOne();
    new Thread(delegate()
    {
        WebRequest request = WebRequest.Create(folderPath);
        request.Credentials = DefaultCredentials;
        request.Method = "MKCOL";

        WebResponse response = request.GetResponse();
        response.Close();
        Lock.Release();
    }).Start();
}
for(int i = 1;i <= 10;i++)
{
    Lock.WaitOne();
}

исключение - это что-то вроде

Необработанное исключение: System.Net.WebException: невозможно подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: Обычно разрешено только одно использование каждого адреса сокета 192.0. 0,1: 81
Для этого хорошо работают веб-запросы, но простое выполнение их по одному (отправка запроса, ожидание ответа, повторение) довольно медленное. Я решил сделать запросы многопоточными, чтобы ускорить процесс. Программа значительно ускорилась, но через некоторое время (1-2 минуты или около того) начинают возникать исключения параллелизма.

Код ниже, это лучший способ сделать это?

Semaphore Lock = new Semaphore(10, 10);
List<string> folderPathList = new List<string>();
//folderPathList populated

foreach (string folderPath in folderPathList)
{
    Lock.WaitOne();
    new Thread(delegate()
    {
        WebRequest request = WebRequest.Create(folderPath);
        request.Credentials = DefaultCredentials;
        request.Method = "MKCOL";

        WebResponse response = request.GetResponse();
        response.Close();
        Lock.Release();
    }).Start();
}
for(int i = 1;i <= 10;i++)
{
    Lock.WaitOne();
}

исключение - это что-то вроде

Необработанное исключение: System.Net.WebException: невозможно подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: Обычно разрешено только одно использование каждого адреса сокета 192.0. 0,1: 81
Для этого хорошо работают веб-запросы, но простое выполнение их по одному (отправка запроса, ожидание ответа, повторение) довольно медленное. Я решил сделать запросы многопоточными, чтобы ускорить процесс. Программа значительно ускорилась, но через некоторое время (1-2 минуты или около того) начинают возникать исключения параллелизма.

Код ниже, это лучший способ сделать это?

Semaphore Lock = new Semaphore(10, 10);
List<string> folderPathList = new List<string>();
//folderPathList populated

foreach (string folderPath in folderPathList)
{
    Lock.WaitOne();
    new Thread(delegate()
    {
        WebRequest request = WebRequest.Create(folderPath);
        request.Credentials = DefaultCredentials;
        request.Method = "MKCOL";

        WebResponse response = request.GetResponse();
        response.Close();
        Lock.Release();
    }).Start();
}
for(int i = 1;i <= 10;i++)
{
    Lock.WaitOne();
}

исключение - это что-то вроде

Необработанное исключение: System.Net.WebException: невозможно подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: Обычно разрешено только одно использование каждого адреса сокета 192.0. 0,1: 81
в System.Net.Sockets.Socket.DoConnect (EndPoint, endPointSnapshot, SocketAddre ss socketAddress)
в System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP)
в System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure, Socket s4, Socket s6, Socket & socket, IPAddress & address, ConnectSocketState state, IAsyncResult asyncResult, тайм-аут Int32, исключение и исключение)

23
задан Terry 25 November 2010 в 14:26
поделиться