Код выполняет циклическую проверку таблицы данных URL-адресов в html для определенной строки и, соответственно, возвращает данные, очень базовые c пока.
Я пытаюсь понять ожидание / asyn c методы лучше, у меня пока довольно хорошо gr asp, но я наткнулся на загвоздку, код, который у меня есть:
FormMain.cs
public async Task RunAsyncAnalyzer()
{
try
{
BtnPerformLinkAnalysis.Enabled = false;
if (DataGridViewLinks.Rows.Count > 0)
{
foreach (DataGridViewRow row in DataGridViewLinks.Rows)
{
row.Cells[2].Value = await Task.Run(() => { Helpers.GetLinkPlatformType(row.Cells[0].Value.ToString()); });
}
}
BtnPerformLinkAnalysis.Enabled = true;
}
catch (Exception ex)
{
Helpers.DebugLogging("[" + DateTime.Now + "]-[" + ex.ToString() + "]");
}
}
private async void BtnPerformLinkAnalysis_Click(object sender, EventArgs e)
{
await RunAsyncAnalyzer();
}
Helpers.cs
public static string GetLinkPlatformType(string url) {
string platform_type = "......";
try {
var html = GetWebPageHTML(url);
if (html.Contains("Start the discussion…")) {
platform_type = "DISCUZ|CAN_COMMENT";
}
}
catch (Exception ex)
{
Helpers.DebugLogging("[" + DateTime.Now + "]-[" + ex.ToString() + "]");
}
return platform_type;
}
Я получаю следующую ошибку: cannot convert type 'void' to 'object'
, и она находится в этой строке: row.Cells[2].Value = await Task.Run(() => { Helpers.GetLinkPlatformType(row.Cells[0].Value.ToString()); });
Здесь также сказано: Awaited Task returns no value
, но метод GetLinkPlatformType
действительно возвращает значение, это не void
я не вижу, в чем проблема, я знаю, что я что-то не смотрю, но я не совсем уверен, что, будет приветствоваться любая помощь в правильном направлении.