内存不足,无法继续执行程序 [英] Insufficient memory to continue the execution of the program
本文介绍了内存不足,无法继续执行程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
for ( int i = 0 ; i < ltTemplateIndex.Count; i ++)
{
if (i == 0 )
{
ppMergedPres = ppSet.Open(Path.GetTempPath()+ @ \ template + i + 。ppt,MsoTriState.msoTrue,MsoTriState.msoFalse,MsoTriState.msoFalse);
ppMergedSlides = ppMergedPres.Slides;
}
else
{
ppPres = ppSet.Open(Path.GetTempPath()+ @ \ template + i + 。ppt,MsoTriState.msoTrue,MsoTriState.msoFalse,MsoTriState.msoFalse);
if (ltTemplateIndex.Count > 1 )
{
try
{
ppMergedSlides.InsertFromFile(Path.GetTempPath()+ @ \ template + i + 。ppt,ppMergedSlides.Count, 1 ,ppPres.Slides.Count);
}
catch (Exception ex){}
if ( ppPres!= null )
ppPres.Close();
}
}
}
string directoryPath = System.Web.Hosting。 HostingEnvironment.MapPath( 〜/ Results);
if (!Directory.Exists(directoryPath))
Directory.CreateDirectory(directoryPath);
ppMergedPres.SaveAs(
Path.Combine(directoryPath,pptFileName),
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation,
MsoTriState.msoFalse);
ppMergedPres.Close();
解决方案
打开文件时可以尝试添加using语句。
这将自动关闭并处理对象(如果实现了IDisposable接口)
for ( int i = 0 ; i < ltTemplateIndex.Count; i ++)
{
string fileName = Path.Combine(Path.GetTempPath(),
String .Format( @ template { 0} .ppt;
使用( var ppTemp = ppSet.Open (fileName,MsoTriState.msoTrue,MsoTriState.msoFalse,MsoTriState.msoFalse))
{
if (i == 0 )
{
ppMergedPres = ppTemp;
ppMergedSlides = ppMergedPres.Slides;
}
else
{
ppPres = ppTemp;
if (ltTemplateIndex.Count > 1 )
{
try
{
ppMergedSlides.InsertFromFile(fileName,ppMergedSlides.Count, 1 ,ppPres.Slides.Count);
}
catch (Exception ex){}
finally
{
if (ppPres!= null )
ppPres.Close ();
}
}
}
} // 资源将被释放这里
}
string directoryPath = System.Web.Hosting.HostingEnvironment.MapPath( 〜/ Results);
if (!Directory.Exists(directoryPath))
Directory.CreateDirectory(directoryPath);
ppMergedPres.SaveAs(
Path.Combine(directoryPath,pptFileName),
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation,
MsoTriState.msoFalse);
ppMergedPres.Close();
请使用此代码并聚焦粗体区域。
ppMergedPres.SaveAs((System.Web.Hosting.HostingEnvironment.MapPath() 〜/ Results / + pptFileName)), PowerPoint.PpSaveAsFileType.ppSaveAsOpenXMLPresentation,MsoTriState.msoFalse);
ppMergedPres.Close();
for (int i = 0; i < ltTemplateIndex.Count; i++)
{
if (i == 0)
{
ppMergedPres = ppSet.Open(Path.GetTempPath() + @"\template" + i + ".ppt", MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
ppMergedSlides = ppMergedPres.Slides;
}
else
{
ppPres = ppSet.Open(Path.GetTempPath() + @"\template" + i + ".ppt", MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
if (ltTemplateIndex.Count > 1)
{
try
{
ppMergedSlides.InsertFromFile(Path.GetTempPath() + @"\template" + i + ".ppt", ppMergedSlides.Count, 1, ppPres.Slides.Count);
}
catch (Exception ex) { }
if (ppPres != null)
ppPres.Close();
}
}
}
string directoryPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Results");
if (!Directory.Exists(directoryPath ))
Directory.CreateDirectory(directoryPath);
ppMergedPres.SaveAs(
Path.Combine(directoryPath, pptFileName),
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation,
MsoTriState.msoFalse);
ppMergedPres.Close();
解决方案
You could try to add a using statement when opening the file.
This will automatically Close and Dispose the object (if there is an IDisposable interface implemented)
for (int i = 0; i < ltTemplateIndex.Count; i++) { string fileName = Path.Combine( Path.GetTempPath(), String.Format(@"template{0}.ppt"; using (var ppTemp = ppSet.Open(fileName, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse)) { if (i == 0) { ppMergedPres = ppTemp; ppMergedSlides = ppMergedPres.Slides; } else { ppPres = ppTemp; if (ltTemplateIndex.Count > 1) { try { ppMergedSlides.InsertFromFile(fileName, ppMergedSlides.Count, 1, ppPres.Slides.Count); } catch (Exception ex) { } finally { if (ppPres != null) ppPres.Close(); } } } } // Resources will be released here } string directoryPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Results"); if (!Directory.Exists(directoryPath)) Directory.CreateDirectory(directoryPath); ppMergedPres.SaveAs( Path.Combine(directoryPath, pptFileName), PowerPoint.PpSaveAsFileType.ppSaveAsPresentation, MsoTriState.msoFalse); ppMergedPres.Close();
Please use this Code and focus bold area .
ppMergedPres.SaveAs((System.Web.Hosting.HostingEnvironment.MapPath("~/Results/" + pptFileName)), PowerPoint.PpSaveAsFileType.ppSaveAsOpenXMLPresentation, MsoTriState.msoFalse); ppMergedPres.Close();
这篇关于内存不足,无法继续执行程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文