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);
}
1MFMailComposeViewController
つはそれほど違いはありません。私はこのメソッドをそのように呼びます: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);
}