現在、私のようなものを持っています。しかし、最近の再訪問の後に私は質問があります。この特定のケースでは、OnResponse()関数はUIを更新しないため、ここで目的を果たさないようです。私はそれを取り除いただけでなく、以前と同じように動作します。何か不足していますか?OpenNetCF FTPクラスマルチスレッディング質問
フォームを使用したマルチスレッドの詳細については、上記のコードで説明したこのメカニズムがUIの応答性を確認するためのものであることを理解しました。
:この機能は以下のように実装されているdelegate void StringDelegate(string dummy);
void OnResponse(string dummy)
{
if(!InvokeRequired)
{
button1.Text = dummy;
}
else
Invoke(new StringDelegate(OnResponse),new object[] {enabled});
}
場合:私たちが言う必要があるとき
だから場合には、次のように我々が実装さOnResponseだろう(例えばなどテキストボックス、ラベルなど)のUI要素を更新します
delegate void StringDelegate(string dummy);
void OnResponse(string dummy)
{
if(InvokeRequired)
{
Invoke(new StringDelegate(OnResponse),new object[] {dummy});
return;
}
}
これを使用するにはどうすればよいですか?それは絶対に必要ですか?
もう1つの質問:ftpオブジェクトはここで独自のスレッドで実行されていますか?
ありがとう!ソルはそうです。現在のコードは、m_ftp_ResponseReceived()内のUIを更新することができます...それが私が混乱している理由です。私の理解は、FTPオブジェクトが独自のスレッドで実行されていましたが、Invokeを使用していない限り、m_ftp_ResponseReceived()内のUIを更新できないはずです。何がありますか?私はUIを応答させるために、BeginConnect()を使い続けたいと思っています。 – sarsnake
また、OpenNetCFにはFTPクラスのConnectメソッドがありません。ちょうどBeginConnect() – sarsnake
私はそれをもっとテストしました。そして、私はm_ftp_ResponseReceived()からUIを更新できるようです。 m_ftp_Connected()内からそれを行うことはできません。非常に興味深い観察。 UIスレッドでm_ftp_Connectedが実行されている必要があります。 – sarsnake