首页新闻找找看学习计划

请教关于C#中回调dll,谢谢

0
悬赏园豆:50 [已解决问题] 解决于 2009-04-16 11:18

在开发短信系统的时候,碰到接收时需要回调,因本人新手,不了解回调,按着示例代码(就是下面的代码),可以弹出对话框显示接收的信息,但是不知道怎么吧这些信息存到数据库中,请大家指教,详细代码如下:

        // 引用接收短信DLL
[DllImport("EUCPComm.dll", EntryPoint = "ReceiveSMS")]
public static extern int ReceiveSMS(string sn, deleSQF mySmsContent);
public delegate void deleSQF(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag);
deleSQF mySmsContent
= new deleSQF(getSMSContent);

//再此处,可弹出对话框显示短信内容
static void getSMSContent(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag)
{
string mob = mobile;
string content = ct;
int myflag = flag;
MessageBox.Show( mobile
+ "/" + ct + "/" + sd );
}

//这是单击按钮接收
private void button5_Click(object sender, EventArgs e)
{
deleSQF mySmsContent
= new deleSQF(getSMSContent);
//接收短信 序列号 函数指针
int result = 2;
while (result == 2) //当result = 2 时,说明还有下一批短信等待接收,这时需重新再调用一次ReceiveSMS方法
{
result
= ReceiveSMS(textBox1.Text, mySmsContent);
if (result == 1)
{
textBox3.Text
+= "接收短信成功'"+DateTime.Now.ToString()+"'\r\n";
//ReceiveMsg recMsg = new ReceiveMsg();
}
else if (result == 101)
{
textBox3.Text
+= "网络故障'" + DateTime.Now.ToString() + "'\r\n";
}
else if (result == 102)
{
textBox3.Text
+= "其它故障'" + DateTime.Now.ToString() + "'\r\n";
}
else if (result == 105)
{
textBox3.Text
+= "参数指针为空'" + DateTime.Now.ToString() + "'\r\n";
}
else if (result == 0)
{
textBox3.Text
+= "失败'" + DateTime.Now.ToString() + "'\r\n";
}
else if (result == -1)
{
textBox3.Text
+= "未知故障'" + DateTime.Now.ToString() + "'\r\n";
}
}
}

现在我的需求就是将接收到的信息存到数据库里面,如果有多条接收,则循环执行,存到数据库的代码如下:
//mobile=手机号 ,ct=内容 ,sd=时间
Class1.ExecuteSql("insert into recSMS(mobile ,ct,sd ) values ('"mobile"' ,+ '"ct"' + '"sd"' )")
请问这句该些到哪里,如何做,我试了很多次,都不行,希望大家帮助,谢谢!

再网上看到一个这样的帖子,应该和我的问题类似http://topic.csdn.net/t/20051128/11/4422514.html,应该是定义一个结构体,但没写具体的方法,那位帮忙看看,,谢谢

huidiao001的主页 huidiao001 | 初学一级 | 园豆:50
提问于:2009-04-14 14:43
< >
分享
最佳答案
0

static void getSMSContent(string mobile, string senderaddi, string recvaddi, string ct, string sd, ref int flag)
        {
           
string mob = mobile;
           
string content = ct;
           
int myflag = flag;
            MessageBox.Show( mobile
+ "/" + ct + "/" + sd );//写在这里吧!!
        }

回调函数:它是定义了deleSQF mySmsContent 由它来接受传递来的参数,

你用getSMSContent(....)实例化了它、所以。在getSMSContent里面你才可以接受dll传递过来的参数、你要不想在这操作的话,你可以先在这做一些处理,比如定义一个数据集dataset,在这填充,然后再其他的地方处理。

邢少 | 专家六级 |园豆:10922 | 2009-04-14 15:53
其他回答(1)
0

一直用asp.net写东西,我估计写了你也看不懂!关注吧!看谁用c#写出来!

子夜星辰 | 园豆:1613 (小虾三级) | 2009-04-14 15:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册