日期:2014-05-17  浏览次数:20881 次

异步执行一个方法导致数据错乱,望解析
我有一个获取消息队列的循环,在每个循环里执行一个异步操作,代码如下
 DoServerHandler doServer = new DoServerHandler(new MainClass().Do);

            int i = 0;
            while (que.GetAllMessages().Length != 0)
            {
                i++;
                try
                {
                    var messageDic = Message.GetMessageGroupByNoticeId();

                    IAsyncResult asyncResult = doServer.BeginInvoke(messageDic, null, null);
                }
                catch (Exception ex)
                {
                    DataLogHelper.E(ex.Message, ex);
                }
            }

委托代理的代码new MainClass().Do如下
    public class MainClass
    {
        int noticeId = 0;
        public void Do(Dictionary<string, string> parameters)
        {
            KeyValuePair<bool, string> kvp = new KeyValuePair<bool, string>();

            if (int.TryParse(parameters["NoticeId"], out noticeId))
            {
                SendEventBase baseItem = SendFactory.SendNotice(parameters);
                if (baseItem != null)