CRM 2011 - Silverlight应用程序,执行同步插件



嗨,我是Silverlight/async编程的新手

情况:Silverlight应用作为一个web资源来做CRUD操作

问题:实体有一个插件步骤注册为同步。然后在silverlight中,当代码执行EndSaveChages(结果)方法时,我得到一个SystemException。

收到的消息是:

当前对象没有引起异步结果。参数名称:asyncResult

我尝试使用锁,线程。Sleep, While和Dispatcher都没有帮助。有一种方法可以保持进程,直到我收到asycResult?

代码:

private void OnUpdateRecordComplete (IAsyncResult result)
{      
    try
    {
        while (!result.IsCompleted)
        {
        }
        Thread.Sleep(1000);
        xrmsm_scores updatedRecord = result.AsyncState as xrmsm_scores;
        context.EndSaveChanges(result);
        // MessageBox.Show("Save Completed!");
        MessageBox.Show(updatedRecord.xrmsm_studentsName.Trim() + "'s Grade has been updated!");
        //MessageBox.Show("HUGE SUCCESS!");
    }
    catch (DataServiceRequestException se)
    {
        MessageBox.Show("The score information could not be saved.nReason: " + getXMLError(se), "Error!", MessageBoxButton.OK);
        studentName = string.Empty;
    }
    catch (SystemException se)
    {
        isSaved = true;
        //string error = se.Message.Replace('"', ''').Replace("rn", @"n");
        //MessageBox.Show("OnUpdateRecordComplete SystemExeption Catch: " + error);
        //It always goes on catch because we are not using MVC System
        //It saves it anyways :P
        //MessageBox.Show("OnCreateRecordComplete");
        //syncContext.Send(new SendOrPostCallback(showErrorDetails), se);
    }   
}

你不应该做睡觉或等待。我的理解是,完整的事件处理程序只调用一次async调用返回。

你看过这个样品吗?它应该能帮助你找到正确的方向。

示例:使用Silverlight创建、检索、更新和删除REST端点

最新更新