关于 IAsyncResult 的同步问题

baidu_35016483 2016-05-16 05:12:35
定入了delegate 如下

delegate bool InsertDataAsync(string sSQL));

private bool InsertData(string sSQL)
{
//insert data by sqlstring
}

private void EndInsertData(IAsyncResult iar)
{
InsertDataAsync passer = (InsertDataAsync)iar.AsyncState;
bool bResult = passer.EndInvoke(iar);
}


调用如下

Main{
string sSQL= "insert into A values('aaa",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss
fff"));
while(true)
{
InsertDataAsync insert= new InsertDataAsync(InsertData);
IAsyncResult iar = parser.BeginInvoke(sSQL, new AsyncCallback(EndInsertData),
insert);
}

 
上面方式在Main代码段中插入数据到数据库不能做到接while(true)循环的次序插入数据,
请问如何做到按while(true)循环插入数据?

当然上面代码只是为了例出情景,

用 ManualResetEvent class 是否可以, 其他方法呢?

...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_35016483 2016-05-16
  • 打赏
  • 举报
回复
引用 1 楼 songbing774933 的回复:
异步没法保证执行顺序 因为你要保证插入顺序,所以没法多个插入同时执行。 直接在后台线程里面执行while循环就不就好了吗
实际情况是这样,client 不断发有包头的xml字节包过来,server收到以后,拆出xml然后解析插入到数据库中 我的做法是,把收到的每个包放到Queue<T>中,然后引发Queue的CollectionChanged事件,并在事件中通过字符串操作,得到xml格式字符串,然后用 IAsyncResult 方式操作XML并插入数据库中,可是收到xml包的次序和插入数据库次序不一致,有时收到xml早的反而插入晚,
baidu_35016483 2016-05-16
  • 打赏
  • 举报
回复
定入了delegate 如下 delegate bool InsertDataAsync(string sSQL)); private bool InsertData(string sSQL) { //insert data by sqlstring } private void EndInsertData(IAsyncResult iar) { InsertDataAsync passer = (InsertDataAsync)iar.AsyncState; bool bResult = passer.EndInvoke(iar); } 调用如下 Main{ string sSQL =""; int i=0; while(true) { i++; sSQL= "insert into A value( i,DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")); InsertDataAsync insert= new InsertDataAsync(InsertData); IAsyncResult iar = parser.BeginInvoke(sSQL, new AsyncCallback(EndInsertData), insert); }   上面方式在Main代码段中插入数据到数据库,但不能做到百分百按while(true)循环的 i 和插入时间 递增次序 来插入数据, 请问如何做到按while(true)循环插入数据? 当然上面代码只是为了例出情景, 用 ManualResetEvent class 是否可以, 其他方法呢?
songbing774933 2016-05-16
  • 打赏
  • 举报
回复
异步没法保证执行顺序

因为你要保证插入顺序,所以没法多个插入同时执行。
直接在后台线程里面执行while循环就不就好了吗
Poopaye 2016-05-16
  • 打赏
  • 举报
回复
要按顺序来干嘛要异步调用?

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧