ReleaseHandleFailed异常

时间:2010-08-18 13:24:39

标签: .net

我刚刚在一个相当简单的小程序中得到了以下血腥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;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您的短信资料库中存在问题。特别是,代码的任何部分都使用SafeCapiHashHandle(这是一个加密句柄,因此,例如,使用基于SSL的Web服务会导致这种情况)。