【问题标题】:Changing slider value of custom transport control gives an exception {"Value does not fall within the expected range."}更改自定义传输控件的滑块值会产生异常 {"Value does not fall in the expected range."}
【发布时间】:2013-08-21 23:31:15
【问题描述】:

使用示例应用程序:

http://code.msdn.microsoft.com/windowsapps/Basic-Media-Playback-003619be#content

自定义传输控制不起作用。移动滑块拇指会出现异常:

BasicMediaPlayback.exe!SDKTemplate.App.InitializeComponent.AnonymousMethod__9(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e) 第 50 行 C#

没有其他调用堆栈条目。

我也试过放

await Task.Delay(500);

并在实际更新时间滑块值或 mediaelemnet 位置之前停止计时器 但仍然得到同样的例外。问题是,控制权甚至没有交给事件处理程序。即使我删除了附加在代码后面的事件处理程序,我也会遇到同样的异常。

在运行这个场景之前我需要设置什么吗?我错过了什么吗? 请帮忙。

【问题讨论】:

  • 我也尝试从我的笔记本电脑录制 mp3 格式,然后播放该录音,我面临同样的滑块问题。您可以使用:code.msdn.microsoft.com/windowsapps/… 来捕获音频。但是如果我从互联网上下载一些 mp3,这个场景就可以了。我将尝试探索更多,然后发布我的发现

标签: c# xaml windows-runtime windows-8.1


【解决方案1】:

您可能应该检查滑块上设置的最小值和最大值,以及设置的值。

【讨论】:

  • 是的。我做了那个检查。行:Scenario4MediaElement.SetSource(stream, this.m_recordStorageFile.FileType); 自动设置最大值和最小值。为了安全起见,我还尝试在 xaml 中设置这些值。但没有帮助
【解决方案2】:

哦,终于明白了:) 声明:

stepFrequency = Math.Round(timevalue.TotalSeconds / 100, MidpointRounding.AwayFromZero);

如果音频太短,则将 stepFrequency 设置为零。

刚刚添加:

stepFrequency = Math.Round(timevalue.TotalSeconds / 100, MidpointRounding.AwayFromZero);
            if (stepFrequency == 0)
            {
                stepFrequency = 1;
            }

让它工作。 谢谢各位:)

【讨论】:

  • 将 double 与 0 进行比较是一个非常糟糕的主意。您应该使用 epsilon。
  • 同意你@ClausJørgensen,我只是想解释它发生的原因以及如何克服它。
猜你喜欢
  • 1970-01-01
  • 2022-12-01
  • 2022-07-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-27
  • 1970-01-01
  • 1970-01-01
  • 2022-12-27
相关资源
最近更新 更多