Я хочу запустить параллельную обработку внутри моего консольного приложения asp.net.я использую c # 7.1 + Visual Studio 2017
Вот мой код: -
class Program
{
static int concurrentrequests = int.Parse(ConfigurationManager.AppSettings["ConcurrentRequests"]);
static SemaphoreSlim throttler = new SemaphoreSlim(initialCount: concurrentrequests);
static int numberofrequests = int.Parse(ConfigurationManager.AppSettings["numberofrequests"].ToString());
static int waitduration = int.Parse(ConfigurationManager.AppSettings["waitdurationmilsc"].ToString());
private static async Task<ScanInfo> gettingCustomerInfo(string website)
{
await throttler.WaitAsync();
ScanInfo si = new ScanInfo();
int counter = 1;
try
{
//code goes here..
Console.WriteLine(website + " --> " + si.EmailGateway + " --> " + si.Status);
}
catch (Exception e)
{
}
try
{
using (WebClient wc = new WebClient()) // call the PM API to get the account id
{
//code goes here..
}
}
catch (Exception e)
{
}
//string pmtoken = tokenGet();
finally
{
throttler.Release();
}
}
return si;
}
static async Task Main(string[] args)
{
Marketing ipfd = new Marketing();
try
{
using (WebClient wc = new WebClient())
{
//code goes here..
}
}
catch (Exception e)
{
}
var tasks = ipfd.companies.Select(c => gettingCustomerInfo(c.properties.website.value)).ToList();
var results = await Task.WhenAll(tasks);
}}
сейчас в моем коде выше, я пытаюсь вызвать gettingcustomerinfo
параллельно.но мой приведенный выше код вызовет следующую ошибку: -
«Программа не содержит статический метод« Main », подходящий для точки входа»
теперь, если я использую: -
static void Main(string[] args)
вместо: -
static async Task Main(string[] args)
вместо этого я получу эту ошибку: -
Оператор 'await' может использоваться тольков асинхронном методе.Попробуйте пометить этот метод модификатором «async» и изменить его тип возвращаемого значения на «Task».
on: -
var results = await Task.WhenAll(tasks);
, так что может кто-нибудь посоветовать по этому поводу, пожалуйста?