我有一个1到4个mediaplayer对象的列表,具体取决于用户当时的要求 我需要在每个1-4上同时调用Play方法。
我不需要它们同时并行运行,我只需要调用play方法,以便列表中的所有内容都同时开始。
目前我正在这样做
foreach(MyMediaPlayer player in lsPlayers)
{
player.Play();
}
可以,但是我想知道是否有更好的方法。
我尝试过
Parallel.ForEach(ObjectList, (obj) =>
{
// Do parallel work here on each object
});
和Parallel.BeginInvoke
但是所有这些似乎都是在新线程中启动的,这导致尝试访问不同线程上的控件时出错。
我只想同时为1到4个媒体播放器对象启动Play()方法
答案 0 :(得分:0)
好吧,您不能在主线程中同时运行4件事。想象它是一个堆栈,其中每行一次处理一次,在这种情况下,每行都是一个函数。
对于您正在做的事情,应该可以在主线程中依次调用所有四个播放方法,因为您不应在所有四个播放器中都感觉到任何延迟。当您有会阻塞接口的计算密集型任务时,线程处理会更好。为此,您应该参考以下答案:https://stackoverflow.com/a/11625264/11042363