【发布时间】:2021-12-07 00:16:15
【问题描述】:
我是 C# 中的线程新手。我想做的是从 API 获取一些屏幕事件。现在我想在我的主屏幕和辅助屏幕上一起运行这些事件。这是代码sn-p。
private void btn_play_Click(object sender, EventArgs e)
{
var path = "C:\\ActiveProjects\\ScreenPlayerClient\\ScreenPlayerClient\\" +
"ScreenPlayerClient\\bin\\Debug\\netcoreapp3.1\\Json\\eventsfile.json";
var events = JsonConvert.DeserializeObject<GetEventsResponseModel>(
File.ReadAllText(path));
var screens = Screen.AllScreens;
foreach (var scr in events.Screens)
{
foreach (var computerscreen in screens)
{
if (scr.Title == computerscreen.DeviceName)
{
Thread thr = new Thread(
new ThreadStart(playContent(scr, computerscreen)));
}
}
}
}
private void playContent(ScreenResponseModel scr, Screen screen)
{
var fileDetails = apiOperation.DownLoadFile(
scr.Events.FirstOrDefault().VideoLink).Result;
var filepath = SaveVideo(fileDetails);
PlayerForm player = new PlayerForm();
player.videolink = filepath;
player.Location = screen.WorkingArea.Location;
player.StartPosition = FormStartPosition.Manual;
player.screen = screen;
player.ShowDialog();
}
我在
处收到错误“需要方法名称”Thread thr = new Thread(new ThreadStart(playContent(scr,computerscreen)));
【问题讨论】:
-
你为什么使用原始线程而不是
Task.Run?此外,您不能从任何操作系统的后台线程修改 UI(包括 UI 组件)。看起来唯一真正需要在后台运行的是apiOperation.DownLoadFile和SaveVideo(fileDetails);。这些方法有什么作用?您可能可以将它们转换为异步方法,因此您根本不需要额外的线程 -
是不是和这篇文章差不多? new thread causes "Method Name Expected" error
标签: c# multithreading winforms