0

WPFのホームオートメーションシステム用に作成したC#アプリがあります。楽しみのために、win8モダンUIアプリに変換したいと思います。私はプログラマーでも親しい人でもありません...だからどんなポインタでも大歓迎です。

これは、デバイスの1つのステータスを確認するための古いコードです。以下は、ライトのステータスコードをチェックするだけです。1はライトがオンになっていることを意味します...0はオフになっています。

        //InitializeComponent();
        WebRequest MasterbedRoomrequest = WebRequest.Create("http://10.10.1.100:3480/data_request?id=lu_variableget&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status&DeviceNum=7");
        HttpWebResponse MasterbedRoomWebresponse = (HttpWebResponse)MasterbedRoomrequest.GetResponse();
        Stream MasterbedRoomdataStream = MasterbedRoomWebresponse.GetResponseStream();
        // Open the stream using a StreamReader for easy access.
        StreamReader readerMasterBedRoom = new StreamReader(MasterbedRoomdataStream);
        // Read the content.
        string responseFromServerMasterbedRoomdata = readerMasterBedRoom.ReadToEnd();
        // Display the content.
        //Console.WriteLine(responseFromServer);
        if (responseFromServerMasterbedRoomdata == "1")
        {
            MasterBedRoomLamp.Checked = true;
        }
        // Cleanup the streams and the response.
        readerMasterBedRoom.Close();
        MasterbedRoomdataStream.Close();
        MasterbedRoomWebresponse.Close();

最新のUIアプリケーションでも同じことをしたいと思います。私がウェブ上で読んでいることから...これを行うための推奨される方法は、HTTPのASYNC機能を使用することであるように思われますか?上記のコードを最新のUIVSテンプレートのいずれかにスローしてコンパイルしようとすると、機能しません。

私はいくつかの例を見てきましたが、それらはすべて私が予想するよりも複雑なようです。

質問。上記のタスクを実行するための最も簡単な方法は何ですか?短いほど良いです。

助けてくれてありがとう!

4

2 に答える 2

1

少し違います。

public async Task<bool> IsLampOn(){
    string responseData = await GetDataFromUrl("http://10.10.1.100:3480/data_request?id=lu_variableget&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status&DeviceNum=7");
    return (responseData == "1")
}

public async Task<string> GetDataFromUrl(string url){
    HttpClient http = new HttpClient();
    HttpResponseMessage response = await(http.GetAsync(new Uri(url)));
    response.EnsureSuccessStatusCode();
    return await response.Content.ReadAsStringAsync();
}

基本的に、あなたはただ電話するでしょう

bool val = await IsLampOn();
于 2013-01-27T04:01:27.657 に答える
0

HttpClient クラスを使用します。簡単な例を次に示します。GetStringAsyncを使用すると、ストリームの動作を回避できます。

于 2013-01-25T21:55:20.767 に答える