本文整理汇总了C#中UIViewController.InvokeOnMainThread方法的典型用法代码示例。如果您正苦于以下问题:C# UIViewController.InvokeOnMainThread方法的具体用法?C# UIViewController.InvokeOnMainThread怎么用?C# UIViewController.InvokeOnMainThread使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UIViewController
的用法示例。
在下文中一共展示了UIViewController.InvokeOnMainThread方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LoginAccount
public static void LoginAccount(string user, string pass, UIViewController ctrl, Action<Exception> error = null)
{
//Does this user exist?
var account = Application.Accounts.Find(user);
var exists = account != null;
if (!exists)
account = new Account { Username = user, Password = pass };
ctrl.DoWork("Logging in...", () => {
BitbucketSharp.Models.UsersModel userInfo;
try
{
var client = new BitbucketSharp.Client(user, pass) { Timeout = 30 * 1000 };
userInfo = client.Account.GetInfo();
}
catch (Exception)
{
throw new Exception("Unable to login as user " + account.Username + ". Please check your credentials and try again. Remember, credentials are case sensitive!");
}
account.FullName = (userInfo.User.FirstName ?? string.Empty) + " " + (userInfo.User.LastName ?? string.Empty);
account.Username = userInfo.User.Username;
account.Password = pass;
account.AvatarUrl = userInfo.User.Avatar;
if (exists)
Application.Accounts.Update(account);
else
Application.Accounts.Insert(account);
Application.SetUser(account);
ctrl.InvokeOnMainThread(TransitionToSlideout);
}, (ex) => {
Console.WriteLine(ex.Message);
//If there is a login failure, unset the user
Application.SetUser(null);
//Show an alert and trigger the callback when the user dismisses it
Utilities.ShowAlert("Unable to Authenticate", ex.Message, () => {
if (error != null)
error(ex);
});
});
}
示例2: MakeCall
public static void MakeCall(CallEntity callEntity, UIViewController vc)
{
var category = callEntity.Category;
var choice = callEntity.Choice ?? "";
var detail = callEntity.Detail ?? "";
var confirmAlertController = UIAlertController.Create(category + " " + choice + " " + detail, Strings.CallSendMessage, UIAlertControllerStyle.Alert);
// When user confirms the service
var okAction = UIAlertAction.Create(Strings.CallSend, UIAlertActionStyle.Destructive, action =>
{
ShowLoadingScreen(vc, Strings.SpinnerDataSending);
new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
var callEntities = DataHandler.LoadCallsFromLocalDatabase(new LocalDB());
vc.InvokeOnMainThread(() =>
{
if (callEntities != null && callEntities.Length > 0)
{
// Check if the call already has been made, then return;
if (CallHasBeenMade(callEntities, callEntity)) return;
}
new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
// Make the async patient call here
try
{
ICall patientCall = new PatientCall();
// Assign the callid with the returned MongoDB id
callEntity._id = patientCall.MakeCall(callEntity);
vc.InvokeOnMainThread(() =>
{
// Call successfull, take the user to myCalls passing the viewcontroller and the requested call
GoToMyCalls(vc,callEntity);
});
}
catch (Exception ex)
{
// Hide the loading screen
Console.WriteLine("ERROR making call: " + ex.Message);
vc.InvokeOnMainThread(() =>
{
loadingOverlay.Hide();
new UIAlertView(Strings.Error, Strings.ErrorSendingCall, null, Strings.OK, null).Show();
});
}
})).Start();
});
})).Start();
new System.Threading.Thread(new System.Threading.ThreadStart(() =>
{
})).Start();
});
// When user cancels the service
var cancelAction = UIAlertAction.Create(Strings.Cancel, UIAlertActionStyle.Cancel, action =>
{
// Do nothing.
});
confirmAlertController.AddAction(okAction);
confirmAlertController.AddAction(cancelAction);
// Display the alert
vc.PresentViewController(confirmAlertController, true, null);
}
示例3: BeginDownloadingImage
public async void BeginDownloadingImage (UIViewController controller, UITableView tableView, NSIndexPath path, List<SpecialistProfileInfos> listSpecialist, SpecialistProfileInfos info, bool isCache)
{
// Queue the image to be downloaded. This task will execute
// as soon as the existing ones have finished.
UIImage data = null;
if (info.Account.AvatarPath != null)
data = await GetImageData (info.Account.AvatarPath, true);
info.SpecialistDetail.ImageAvatar = getImageFrom (data);
if (controller != null) {
controller.InvokeOnMainThread (() => {
TCSearchCellTemplate cell = null;
cell = tableView.VisibleCells.Where (c => c.Tag == listSpecialist.IndexOf (info)).FirstOrDefault () as TCSearchCellTemplate;
if (cell != null) {
cell.avatar.Image = getImageFrom (data);
cell.indicator.StopAnimating ();
cell.indicator.Color = UIColor.Clear;
}
});
}
}
示例4: ShowImagePicker
private void ShowImagePicker(UIViewController viewController, UIImagePickerControllerSourceType pickerType)
{
imagePicker = new UIImagePickerController();
imagePicker.SourceType = pickerType;
// only allow photos (not videos)
imagePicker.MediaTypes = new string[] { UTType.Image };
if (pickerType == UIImagePickerControllerSourceType.Camera)
{
imagePicker.ShowsCameraControls = true;
}
imagePicker.FinishedPickingMedia += (s, e) =>
{
viewController.InvokeOnMainThread(() =>
{
bool didPickAnImage = e.MediaType == ImageMediaType && e.OriginalImage != null;
OnFinishedPicking(didPickAnImage, e.OriginalImage);
});
};
imagePicker.Canceled += (object s, EventArgs e) =>
{
OnFinishedPicking(false, null);
};
imagePicker.ModalInPopover = true;
imagePicker.ModalPresentationStyle = UIModalPresentationStyle.FullScreen;
imagePicker.ModalTransitionStyle = UIModalTransitionStyle.CoverVertical;
viewController.PresentViewController(imagePicker, true, null);
}