Ich habe gerade die folgende blutige MDA-Ausnahme bei einem recht einfachen kleinen Programm erhalten:
Ein SafeHandle oder CriticalHandle vom Typ 'Microsoft.Win32.SafeHandles.SafeCapiHashHandle' konnte das Handle nicht ordnungsgemäß freigeben mit dem Wert 0x004E48C0 freigeben. Dies bedeutet normalerweise darauf hin, dass das Handle auf andere Weise auf andere Weise falsch freigegeben wurde (z. B. durch Extrahieren des Handles mit DangerousGetHandle extrahiert und es geschlossen direkt schließen oder ein anderes SafeHandle um es herum).
So etwas habe ich noch nie gesehen. Mein Programmcode ist:
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;
}
}
}