gpt4 book ai didi

.net - 如何在控制台应用程序中的 WPF MediaElement 上播放视频

转载 作者:行者123 更新时间:2023-12-04 06:23:14 25 4
gpt4 key购买 nike

我有一个引用 WPF dll 的控制台应用程序。我实例化并尝试在 MediaElement 上播放视频,但它没有触发任何事件。这可能意味着它没有播放视频。以下是我写的代码:

class Program
{
[STAThread]
static void Main(string[] args)
{
var element = new MediaElement();
element.BeginInit();
element.Source = new Uri("Wildlife.wmv", UriKind.RelativeOrAbsolute);
element.EndInit();
element.LoadedBehavior = element.UnloadedBehavior = MediaState.Manual;
element.MediaOpened += new RoutedEventHandler(MediaElement_MediaOpened);
element.Play();
Console.ReadLine();
}

static void MediaElement_MediaOpened(object sender, RoutedEventArgs e)
{
Console.WriteLine("Media opened");
}
}

我希望将“媒体打开”写在控制台上。它在 WPF 应用程序中运行良好。我在这里做错了什么?

我正在使用 WPF 4.0

编辑:请注意,我对视频输出不感兴趣。我知道我可以实例化一个窗口并在其中加载视频,但这不是我想要做的。我只是想了解为什么这段代码不起作用?

注意:在 WPF 中,如果我在 Window_Load 中执行相同的一组行而不将 wpf 元素添加到可视化树中;我确实触发了事件。它不是关于插入到可视化树中的元素。还有其他需要的东西,我不确定那是什么。

最佳答案

The MediaElement control requires a Win32 message loop in order to perform its operations .没有它根本就行不通。默认情况下,您的控制台应用程序中不会有一个。

它在您的 Window.Load 中起作用的原因事件是因为有一个消息循环作为 WPF 应用程序的一部分运行。这与“在视觉树中 Root ”无关。

这也是为什么@mzabsky's solution in PowerShell works ,作为 Window.ShowDialog方法将确保存在一个消息循环来处理 Win32 消息。

关于.net - 如何在控制台应用程序中的 WPF MediaElement 上播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6322357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com