2016-07-16 1 views
1

私のXamarin iOSストーリーボードにボタンがあります。このボタンは、コード内のメソッドをトリガします。このメソッドはHttpClient Web呼び出しを作成し、UIのステータス更新を行い、ユーザーが何が起きているかを知るようにします。以下のようなボタンイベント(または別のタスク)からUIを更新する方法

物事: はなど、「タイムアウトしました、「応答を待っている」、「送信は、」..私は、このためにUITextViewを持っ

私のことができるようにと主張するコードのいくつかの作品を見つけました。これは、私が試したことはないが、ボタンコード全体が実行終了した後でTextViewの値を変更するだけなので、新しいテキスト値はキューに入れられているが、イベント中は変更されていないようだ実行されている

私はこのようにトリガーされてからこれをやりたい方法:

ButtonRegister.TouchUpInside += EventSendRegisterRequest; 

これは動作しません:

BeginInvokeOnMainThread(() => 
{ 
    TextResponseRegister.Text = "Sending."; 
}); 

はいずれも、この行います

BeginInvokeOnMainThread(() => 
{ 
    TextResponseRegister.Text = "Sending."; 
}); 

var c = new Communication.Communication(); 
var taskRegister = Task.Run(async() => 
{ 
    return await c.RegisterUserAsync(username, password, password, email); 
}); 
taskRegister.Wait(5000); 

BeginInvokeOnMainThread(() => 
{ 
    TextResponseRegister.Text = "Done."; 
}); 

のみ Doneがこれまでに表示されます。HERESに EventSendRegisterRequestのコードのexampled簡素化

InvokeOnMainThread(() => 
{ 
    TextResponseRegister.Text = "Sending."; 
}); 

を。

タスクまたはUIイベントからUIを更新したいと考えています。 どうすればいいですか?

private async void EventSendRegisterRequest(string username, string email, string password) 

し、このようにその方法で更新を行う:このような非同期でのボタンイベントメソッドを飾る

+0

gitなどでコード全体を共有できますか? – jzeferino

答えて

0

InvokeOnMainThread(() => { 
    TextResponseRegister.Text = "Sending."; 
}); 

は私の問題を解決しました。すべてがUIに直接表示されます。

関連する問題