Hallo zusammen,
ich habe ein Tool zum SMS versenden über UMTS geschrieben, dies funktioniert soweit alles. Leider bekomme ich (aber nur ab und zu) eine Fehlermeldung:
Was habe ich gemacht?
Ich habe mir eine Klasse geschrieben, dafür benötigte ich 4 DLL Dateien, die ich mit Projekt->Verweis hinzufügen->Durchsuchen ausgewählt und peer using eingebunden habe
Ich kann x mal die Methode public bool SMSleseninDatagrid(DataGridView dgv, PhoneMessageStatus status) ausführen und beim x+1 gibt er die Fehlermeldung und zwar an dieser Stelle:
Vielen Dank für eure Hilfe
ich habe ein Tool zum SMS versenden über UMTS geschrieben, dies funktioniert soweit alles. Leider bekomme ich (aber nur ab und zu) eine Fehlermeldung:
Code:
Die Laufzeit hat einen schwerwiegenden Fehler entdeckt. Fehleradresse: "0x65317aed" in Thread "0x12a8". Fehlercode: 0xc0000005. Bei diesem Fehler könnte es sich um ein Problem in der CLR oder in den unsicheren oder nicht verifizierbaren Teilen des Benutzercodes handeln. Übliche Ursachen dieses Bugs sind Marshallerfehler für COM-Interop oder PInvoke, die den Stapel beschädigen können.
Was habe ich gemacht?
Ich habe mir eine Klasse geschrieben, dafür benötigte ich 4 DLL Dateien, die ich mit Projekt->Verweis hinzufügen->Durchsuchen ausgewählt und peer using eingebunden habe
Code:
using ...
using GsmComm.GsmCommunication;
using GsmComm.PduConverter;
class SMS
{
SmsSubmitPdu _pdu;
GsmCommMain _comm;
DataTable _dt = new DataTable();
public SMS()
{
_comm = new GsmCommMain(3);
_comm.Open();
}
public bool SMSleseninDatagrid(DataGridView dgv, PhoneMessageStatus status)
{
try
{
string storage = PhoneStorageType.Phone;
DataTable t = new DataTable();
DataColumn column;
DataRow row;
column = new DataColumn();
column.ColumnName = "Absender";
t.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "Uhrzeit";
t.Columns.Add(column);
column = new DataColumn();
column.ColumnName = "Nachricht";
t.Columns.Add(column);
DataSet dataSet = new DataSet();
dataSet.Tables.Add(t);
if (status == PhoneMessageStatus.All)
{
DecodedShortMessage[] messages = _comm.ReadMessages(PhoneMessageStatus.ReceivedRead, storage.ToString());
foreach (DecodedShortMessage message in messages)
{
DataRow dr = _dt.NewRow();
SmsDeliverPdu data = (SmsDeliverPdu)message.Data;
row = t.NewRow();
row[0] = data.OriginatingAddress.ToString();
row[1] = data.SCTimestamp.ToDateTime();
row[2] = data.UserDataText;
_dt.Rows.Add(dr);
t.Rows.Add(row);
}
DecodedShortMessage[] messages2 = _comm.ReadMessages(PhoneMessageStatus.ReceivedUnread, storage.ToString());
foreach (DecodedShortMessage message in messages2)
{
DataRow dr = _dt.NewRow();
SmsDeliverPdu data = (SmsDeliverPdu)message.Data;
row = t.NewRow();
row[0] = data.OriginatingAddress.ToString();
row[1] = data.SCTimestamp.ToDateTime();
row[2] = data.UserDataText;
_dt.Rows.Add(dr);
t.Rows.Add(row);
SystemSounds.Asterisk.Play();
}
}
dgv.DataSource = dataSet.Tables[0];
dgv.Sort(dgv.Columns[1], ListSortDirection.Descending);
dgv.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dgv.Columns[1].Width = 170;
dgv.Columns[0].Width = 150;
dgv.Columns[1].ReadOnly = true;
dgv.Columns[0].ReadOnly = true;
return true;
}
catch
{
return false;
}
}
}
Ich kann x mal die Methode public bool SMSleseninDatagrid(DataGridView dgv, PhoneMessageStatus status) ausführen und beim x+1 gibt er die Fehlermeldung und zwar an dieser Stelle:
Code:
DecodedShortMessage[] messages = _comm.ReadMessages(PhoneMessageStatus.ReceivedRead, storage.ToString());
Vielen Dank für eure Hilfe