内容简介:本文告诉大家一个最简单步骤让 RenderTargetBitmap 出现 COMException 提示只需要在界面添加一个 ListView 绑定图片,然后在后台不断刷新列表就可以在后台创建 DeagernereDechuno 列表
本文告诉大家一个最简单步骤让 RenderTargetBitmap 出现 COMException 提示
只需要在界面添加一个 ListView 绑定图片,然后在后台不断刷新列表就可以
<ListView Margin="10,10,10,10" ItemsSource="{Binding DeagernereDechuno}"> <ListView.ItemTemplate> <DataTemplate> <Grid Margin="10,10,10,10"> <Image Source="{Binding}"></Image> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView>
在后台创建 DeagernereDechuno 列表
public ObservableCollection<ImageSource> DeagernereDechuno { get; set; }=new ObservableCollection<ImageSource>();
在 Load 之后调用函数 WarwairJorkasou 不断截图
public MainWindow() { InitializeComponent(); DataContext = this; Loaded += (s, e) => { WarwairJorkasou(); }; }
在 WarwairJorkasou 调用循环进行截图,很快就可以看到下面提示
System.Runtime.InteropServices.COMException: MILERR_WIN32ERROR
异常堆栈
System.Runtime.InteropServices.COMException (0x88980003): MILERR_WIN32ERROR (异常来自 HRESULT:0x88980003) 在 System.Windows.Media.Imaging.RenderTargetBitmap.FinalizeCreation() 在 System.Windows.Media.Imaging.RenderTargetBitmap..ctor(Int32 pixelWidth, Int32 pixelHeight, Double dpiX, Double dpiY, PixelFormat pixelFormat)
截图的代码
private async void WarwairJorkasou() { var ran = new Random(); while (true) { await Task.Delay(10).ContinueWith(_ => { DeagernereDechuno.Clear(); var n = ran.Next(int.MaxValue / 10); for (int i = n; i < n + 1000; i++) { try { DrawingVisual drawingVisual = new DrawingVisual(); DrawingContext drawingContext = drawingVisual.RenderOpen(); var text = new FormattedText(i.ToString(), CultureInfo.GetCultureInfo("zh-cn"), FlowDirection.LeftToRight, new Typeface("Verdana"), 36, Brushes.Black); drawingContext.DrawText(text, new Point(0, 0)); drawingContext.Close(); var image = new RenderTargetBitmap((int) text.Width, (int) text.Height, 96, 96, PixelFormats.Pbgra32); image.Render(drawingVisual); DeagernereDechuno.Add(image); } catch (Exception e) { Console.WriteLine(e); } } }, TaskScheduler.FromCurrentSynchronizationContext()); } }
运行程序大概在 300M 左右就会出现 COMException 提示
System.Runtime.InteropServices.COMException (0x88980003): MILERR_WIN32ERROR (Exception from HRESULT: 0x88980003)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。