2015-02-03 2 views
0

У меня вопрос. У меня есть метод Processrequest(), который поддерживает многопоточность, может ли каждый поток создавать один экземпляр класса Requestclass и работать самостоятельно.Создание экземпляра класса в том же методе для нескольких потоков

Например.,

public class Requestclass : producerclass 
{ 
    public override string Generaterequest(); 
} 


public class producerclass 
{ 
    public virtual string Generaterequest(); 

    Public void Processrequest(){ 
     string request = Generaterequest(); 
     //HttpWebRequest here 
     // process the request here 
    } 

} 

Для одного экземпляра Requestclass, он отлично работает. Но я хотел бы знать, как действовать в этом случае

  1. У меня есть несколько класс запроса
  2. Это запрос имя класса будет динамичным.
  3. Поскольку он поддерживает многопоточность, то каждый поток должен обрабатывать один класс запроса одновременно.

(Edit: Если у меня есть несколько Requestclass, как создать экземпляр в ProcessRequest() метод будет ли поддерживаться экземпляр создается в каждом потоке.?)

+0

Ваш вопрос очень неясен. Что именно ты пытаешься сделать? –

+0

Используйте ThreadPool.QueueUserWorkItem для достижения своей цели –

+1

как может Requestclass 'override' что-нибудь? – MrWombat

ответ

0

Если я понимаю, что сценарий правильно, вы хотите создать несколько RequestClasses, каждый из которых генерирует другой запрос, который выполняется одновременно? Начать новую задачу с TPL для каждого запроса, как:

public void Processrequest(){ 
    Task.Factory.StartNew(() => { 
     string request = Generaterequest(); 
     //access and process request here 
    }); 
} 

Вы также можете добавить задачу продолжения для обработки результата каждого начала Task.

Смежные вопросы