首先,我承认我不太了解内存管理,所以我可能会遗漏一些明显的东西。我一直在浏览诸如this之类的文章等,但没有发现任何有用的信息。
我正在遍历StorageFile
的集合并为每个SlideTemplate
创建一个SlideTemplate
。 (UserControl
只是InkCanvas
,其中包含InkCanvas
。)然后,我将笔划从文件流加载到SlideTemplate
并将ObservableCollection<SlideTemplate>
添加到foreach (var slide in slides)
{
using (var stream = await slide.OpenSequentialReadAsync())
{
InkCanvas inkCanvas = new InkCanvas();
SlideTemplate newSlide = new SlideTemplate();
await inkCanvas.InkPresenter.StrokeContainer.LoadAsync(stream);
newSlide.Set_Canvas(inkCanvas);
newSlide.Set_PenSize(new Size(DataModel.Instance.CurrentProject.PenSize, DataModel.Instance.CurrentProject.PenSize));
DataModel.Instance.CurrentProject.Slides.Add(newSlide);
}
}
我的inkCanvas = null;
GC.Collect();
GC.WaitForPendingFinalizers();
。这是代码:
foreach
当它达到大约61或62时,它会在“new InkCanvas()”上抛出一个异常,说它“无法创建...... InkCanvas的实例”。以下是VS Diagnostic工具抛出异常时的内存使用情况:
内存使用量在循环播放时不断攀升。把这个:
pip install regex
\Python27\Scripts\
中的实际上成功加载了所有80个幻灯片,但一旦完成,内存使用量就会保持不变并且不会再次下降。然后返回(使用类似的方法将墨迹笔划保存回文件)并重新加载项目使用大约150MB的内存引发相同的错误。有人可以解释一下这里有什么用,或者链接到一篇有用的文章吗?