我刚刚在一个相当简单的小程序中得到了以下血腥MDA异常:
类型的SafeHandle或CriticalHandle 'Microsoft.Win32.SafeHandles.SafeCapiHashHandle' 未能正确释放手柄 值为0x004E48C0。这通常 表示句柄已释放 错误地通过另一种方式(例如 使用提取句柄 DangerousGetHandle并关闭它 直接或建立另一个 SafeHandle在它周围。)
我从未见过这样的事情。我的程序代码是:
public partial class SmsEditorForm : Form
{
public SmsEditorForm()
{
InitializeComponent();
}
private void SmsEditorForm_Load(object sender, EventArgs e)
{
using (var ents = new TemplateEntities())
{
templateCombo.DataSource = ents.NotificationTemplates.OrderBy(nt => nt.TemplateName).ToList();
jobCardCombo.DataSource = ents.JobCards.Where(jc => !jc.JobDeleted && !jc.Archived).ToList();
}
}
private void smsText_TextChanged(object sender, EventArgs e)
{
charCountLabel.Text = smsText.Text.Trim().Length.ToString();
}
private void templateCombo_SelectedIndexChanged(object sender, EventArgs e)
{
using (var ents = new TemplateEntities())
{
smsText.Text = ents.NotificationTemplates.Single(nt => nt.TemplateId == (int) templateCombo.SelectedValue).ExternalRecipientSms;
}
}
}
答案 0 :(得分:3)
您的短信资料库中存在问题。特别是,代码的任何部分都使用SafeCapiHashHandle
(这是一个加密句柄,因此,例如,使用基于SSL的Web服务会导致这种情况)。