我目前正在尝试MFMailComposeViewController
在 SMS 一 ( MFMessageComposeViewController
) 之后、用户发送消息或取消之后显示电子邮件视图 ( )。
MFMessageComposeViewController
正确关闭,但不MFMailComposeViewController
显示。
我在线程上搜索InvokeInMainThread
,但它没有显示或不在主线程中。老实说,我根本不知道线程,我阅读的文档也不清楚。
显示方法MFMessageComposeViewController
:
private void SendSms ()
{
string strMessage = MessageComposer.GetMessage(isEmergency, latitude, longitude, location);
MFMessageComposeViewController message = Sender.SendSms(strMessage, AppDelegate.contacts);
message.Finished += delegate {
message.DismissModalViewControllerAnimated(true);
};
this.NavigationController.PresentModalViewController (message, true);
}
MFMailComposeViewController
一个并没有太大的不同。我这样称呼这种方法:InvokeOnMainThread(delegate { SendSms(); });
并且效果很好。
我不好的是当它关闭时。我试过ThreadPool.QueueUserWorkItem(new WaitCallback(new Object(), SendEmail));
了,但它不在主线程中。
我试过那个:
SendDelegate d = new SendDelegate(SendSms);
AsyncCallback callBack = new AsyncCallback(SendEmail);
IAsyncResult ar = d.BeginInvoke(new Object(), callBack, null);
不在主线程中。
编辑:解决方案代码
这是如何解决的!我应该考虑一下...
MFMessageComposeViewController message = new MFMessageComposeViewController();
message.Finished += delegate {
message.DismissModalViewControllerAnimated(true);
ThreadPool.QueueUserWorkItem ((e) => {
Thread.Sleep(500);
InvokeOnMainThread (delegate {
SendEmail();
});
});
};
this.NavigationController.PresentModalViewController (message, true);
}