Не появляется окно Windows Forms при присвоении переменной
Разбираюсь с работой с REST API в C#. Получилось так, что почему-то окно приложения Windows Forms перестало открываться, когда я вызываю свой метод для получения списка загруженных на сервер видео.
namespace TVizard_GUI
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
clockLabel.Text = DateTime.Now.ToString("HH:mm:ss");
}
private void MainForm_Load(object sender, EventArgs e)
{
Video[] videos = API.GetVideoListAsync().Result;
//Array.ForEach(videos, video =>
//{
// videoList.Items.Add(video.filename);
//});
}
}
public class Video
{
public string filename { get; set; }
public int duration { get; set; }
public string durationReadable { get; set; }
}
static class API
{
private static HttpClient client = new();
public static async Task<Video[]> GetVideoListAsync()
{
var response = await client.GetAsync("http://localhost:3000/uploadedVideos");
var videos = await JsonSerializer.DeserializeAsync<Video[]>(response.Content.ReadAsStream());
return videos;
}
}
}
Когда я комментирую присвоение переменной videos результата исполнения функции, всё тоже начинает работать. Значит, проблема не в самой функции, а именно в моменте, когда то, что она возвращает направляется в переменную. Почему так может быть?
Ответы (1 шт):
Решила проблему, сделав функцию MainForm_Load асинхронной. По какой-то причине, когда я это делала изначально, IDE выдавала мне ошибку. Скорее всего поэтому я и не дошла до этого сразу. Сейчас просто вызываю нужный метод через await.
private async void MainForm_Load(object sender, EventArgs e)
{
Video[] videos = await API.GetVideoListAsync();
Array.ForEach(videos, video =>
{
videoList.Items.Add(video.filename);
});
}
В остальном коде никаких изменений нет.