我刚开始玩弄 C#/.NET/mono 之类的东西,我正在尝试制作一个简单的歌曲播放器。为此,我正在使用winmm.dll
(没有找到简单的跨平台解决方案)。问题是这样的:我需要在播放歌曲的同时更新轨迹栏。我有两个函数,Player.GetLength
and Player.GetCurrentPosition
,它们以毫秒为单位返回时间。如果我称他们为“正常”,一切都很好。但我需要在计时器中调用它们,如下所示:
new System.Threading.Timer((state) =>
{
length = Player.GetLength();
pos = Player.GetCurrentPosition();
trackBar1.Value = (pos / length) * 100;
}, null, 0, 100);
这是GetLength
,并且GetCurrentPosition
是类似的:
public static int GetLength()
{
StringBuilder s = new StringBuilder(128);
mciSendString("status Song length", s, s.Capacity, IntPtr.Zero);
return int.Parse(s.ToString());
}
问题:当这两个函数之一被调用时,程序只是停止,没有任何警告或异常抛出。注意:我使用的是 .NET
所以我想知道你是否可以向我解释我哪里弄错了:)