我想調用一個嵌套的異步函數,但我沒有得到所需的數據。 因爲我在Silverlight中使用wcf服務,所以我只能使用異步函數。Silverlight中嵌套的異步函數
在我的代碼中,我保存了一組包含userdata的行。在我保存之前,我需要檢查用戶名是否唯一。現在我只需要找出第一個,然後退出循環,並顯示一條消息,user.for簡單起見,我已經全部剝離額外數據的功能,這是它的外觀
private void SaveUsers(bool CloseForm)
{
ObservableCollection<User> _UpdatedUsers = new ObservableCollection<User>();
DatabaseServiceLocal _dataService = new DatabaseServiceLocal(Database);
foreach (UserViewModel _User in _AllUsers)
{
//bool success = _dataService.IsUserNameUnique(_User.UserName, _User.UserID, Database.CurrentClient.ClientID);
if (_User.Dirty && !_User.IsBlank)
{
_dataService.CheckIsUserNameUnique += (s, e) =>
{
if (e.IsUnique)
_UpdatedUsers.Add(_User.SaveAsUser());
else
{
_UpdatedUsers = new ObservableCollection<User>();
csaMessageBox.Show(string.Format("Username {0} is not allowed as it already exists in the system. Please choose a different username.", ""), null);
return;
}
};
_dataService.IsUserNameUnique(_User.UserName, _User.UserID, Database.CurrentClient.ClientID);
}
_dataService.UpdateStaffAndUsersCompleted += (s, e) =>
{
BusyIndicator = false;
if (e.Success)
{
}
if (CloseForm)
ReturnToHomePage();
else
{
LoadUsers();
OnUsersSaved();
}
}
BusyIndicator = true;
BusyMessage = "Saving...";
_dataService.UpdateUsers(Database.CurrentProject.ProjectID, Database.CurrentClient.ClientID, _UpdatedUsers, _DeletedProjectUsers);
}
在這種情況下,我正在嘗試查找用戶名是否唯一,向用戶顯示消息並返回。 顯然它不是那麼簡單。我嘗試了更多不同的方式,但它不起作用。我如何得到這個工作?
如果您的用戶IsUnique是否想避免UpdateStaffAndUsers()調用? – bit
是的..如果其中一個用戶不是唯一的我不希望UpdateStaffAndUsers()函數運行 –
然後放置「_dataService.UpdateUsers(Database.CurrentProject.ProjectID,Database.CurrentClient.ClientID,_UpdatedUsers,_DeletedProjectUsers);」在CheckIsUserNameUnique處理程序內部 – bit