【发布时间】:2010-09-16 07:53:59
【问题描述】:
我使用BackGroundWorker 和ProgressBar。
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
e.Result = MyMethod((int)e.Argument, worker, e);
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
tStripStatus.Text = "operation Ended.";
tStripStatus.ForeColor = Color.Green;
}
在 MyMethod 中,我使用Dispose() 方法获取必要的资源。
- 当我的应用程序启动时,它使用 ~10 000K 内存。
- 当我的应用程序运行时,它使用了 ~40 000 k - ~ 70 000k 内存。
- 操作完成后,它使用约 30 000 k 内存。
如何捕获正在使用 30 000 k - 10 000 k=~20 000 k 内存的内容?
【问题讨论】:
-
如果您想分析为什么它可能占用资源,您应该发布 MyMethod。但可能只是GC还没有收集到内存。
-
@Albin,MyMethod 很难理解。我只是想知道,其他人和专业人士使用哪些技术来解决资源问题。
-
您如何确定您的应用程序实际使用了多少内存?如果您只查看任务管理器中的 “内存(私有工作集)” 列,那并不能告诉您任何信息。
-
@Timwi:我使用“内存(私有工作集)”列,并运行应用程序。通过此列中的值,我获得了在不同阶段使用我的应用程序的内存数量。但据我现在理解,这是错误的方式。
标签: c# memory-management dispose