我们有一个Silverlight应用程序,允许用户上传保存在我们数据库中的文档。最近,当单击按钮选择文件时,OpenFileDialog导致浏览器崩溃。我已经在IE 8/9中复制了这个。有时幸运的是它会按预期工作并将选定的文件信息返回给应用程序代码,但有时在使用对话框时,IE实例运行的cpu核心将跳转到90%以上。当对话框关闭时,IE9会完全挂起,而IE8会假装工作,让UI响应鼠标悬停,但不会接受任何实际输入。
以前有其他人有这个问题吗?它似乎与Silverlight / Windows相关......我们的应用程序代码没有任何古怪的东西会导致这样的事情。此外,崩溃发生在OpenFileDialog.ShowDialog()方法内部。调试并不容易。
XAML:
<Button Content="Browse" Height="{StaticResource ButtonHeightDouble}" HorizontalAlignment="Left"
x:Name="Browse" Width="{StaticResource ButtonStandardWidthDouble}"
Style="{StaticResource GrayButtonStyle}"
Foreground="White" FontWeight="Bold" VerticalAlignment="Top"
Margin="{StaticResource SmallGapVerticallyStackedThickness}"/>
C#:
public void Browse()
{
OpenFileDialog openDialog = new OpenFileDialog
{
Filter = "Quote Files (*.pdf;*.jpg;*.jpeg;*.docx;*.doc;*.xlsx;*.xls;*.tif;*.tiff)|*.pdf;*.jpg;*.jpeg;*.docx;*.doc;*.xlsx;*.xls;*.tif;*.tiff",
Multiselect = false
};
// wrapping this in a try/catch does not catch anything if it crashes
if (openDialog.ShowDialog() == true)
{
try
{
// do things with the file;
// if crash occurs, this code is never reached
// even if "Open" is clicked in the dialog box
}
catch (FileNotFoundException ex)
{
SilverlightMessageBoxLibrary.Message.ErrorMessageLarge(ex.Message);
}
}
}