- C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
844 :デフォルトの名無しさん[sage]:2015/03/17(火) 11:21:18.75 ID:fOt5FY4t - http://dobon.net/vb/dotnet/internet/webrequest.html
ここページにある一番下のC#用のコードにある↓のコールバックメソッドに //非同期要求が終了した時に呼び出されるコールバックメソッド private static void ResponseCallback(IAsyncResult ar) これににSystem.IO.Stream以外の文字列を渡したいんですが 複数の引数を渡す場合にはどうすればいいのでしょうか?
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
847 :844[sage]:2015/03/17(火) 17:08:45.62 ID:fOt5FY4t - >>846 ありがとうございました。
System.IO.Streamと文字列をTupleに詰め込んでコールバック関数に渡すまではわかるんですが、 渡したあとIAsyncResult ar を Tupleにキャストが出来ません IAsyncResultをオブジェクト型にして、そこからTupleにしてもキャストできないので困ってます・・・・ System.IO.Stream st = webres.GetResponseStream(); // 3つの型のオブジェクトを1つにまとめる myTuple = Tuple.Create(st, "あああ"); //非同期でデータの読み込みを開始 //状態オブジェクトとしてStreamを渡す IAsyncResult r = (IAsyncResult)st.BeginRead( bufferData, 0, bufferData.Length, new AsyncCallback(ReadCallback), myTuple); } //非同期読み込み完了時に呼び出されるコールバックメソッド private static void ReadCallback(IAsyncResult ar) { Tuple myTuple = (Tuple)ar.AsyncState; ← ここがダメ //状態オブジェクトとして渡されたStreamを取得 System.IO.Stream st = (System.IO.Stream)ar.AsyncState;
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
849 :デフォルトの名無しさん[sage]:2015/03/17(火) 18:42:54.17 ID:fOt5FY4t - なんとか文字列だけはコールバック関数に渡せるようになったのですが
System.IO.Stream が渡せてないようです。 private void ReadCallback(IAsyncResult ar) { Tuple<System.IO.Stream, string> myTuple = ar.AsyncState; Console.Write(myTuple.Item1.GetType()); Console.Write(myTuple.Item2); System.IO.Stream st = (System.IO.Stream)myTuple.Item1; string s = myTuple.Item2; } ↓でエラーになります System.IO.Stream st = (System.IO.Stream)myTuple.Item1; 型 'System.Net.ConnectStream' のオブジェクトを型 'System.Tuple`2[System.IO.Stream,System.String]' にキャストできません。 昨日からあれこれやって、最初はクラスを作って渡そうとしたのですが、文字列は渡せても 今回みたいに System.IO.Stream が渡せないんですよね
| - C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net
851 :デフォルトの名無しさん[sage]:2015/03/17(火) 20:01:34.18 ID:fOt5FY4t - もうちょいヒント下さいw
System.IO.Stream コールバックメソッドに渡したら System.Net.ConnectStream や System.IO.Stream,System.String に なぜ変化するのかがサッパリわかりません
|
|