トップページ > プログラム > 2015年03月17日 > fOt5FY4t

書き込み順位&時間帯一覧

6 位/141 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000010000011010004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
844
C#, C♯, C#相談室 Part86 [転載禁止]©2ch.net

書き込みレス一覧

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 に
なぜ変化するのかがサッパリわかりません


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。