>source

간단한 XML-from-url 파서가 있습니다. 여기에 있습니다.

static async Task<string> TestReader(string URL)
        {
            string XMLtext = "";
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.Async = true;
            using (XmlReader reader = XmlReader.Create(URL, settings))
            {
                while(await reader.ReadAsync())
                {
                    switch(reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            XMLtext += reader.LocalName;
                            break;
                        case XmlNodeType.Text:
                            XMLtext += reader.GetValueAsync();
                            break;
                    }
                }
                return XMLtext;
            }
        }

콘솔 앱에서 테스트하고 싶지만 파서에서 XML 텍스트를 반환하는 방법을 모르겠습니다. Main 함수에이 코드가 있지만 원하는대로 작동하지 않습니다.

static void Main(string[] args)
        {
            Task T = TestReader("http://somewebsite/YML.xml");
            Console.WriteLine(Convert.ToString(T));
        }

"System.Runtime.CompilerServices.AsyncTaskMethodBuilder 1 + AsyncStateMachineBox1 [System.String, ParserXML.Program + d__0]"과 같은 결과를 반환합니다.

T.Start ()도 시도했지만 컴파일러에서 "Promise 스타일 작업에서 Start를 호출 할 수 없습니다."라는 런타임 오류가 발생합니다.

화면에 XMLtext를 인쇄 할 수 있습니까?

  • 답변 # 1

    당신은 await 문자열을 되 찾는 방법. 즉, Main 방법 async 너무

    static async Task Main(string[] args)
    {
        string result = await TestReader("http://somewebsite/YML.xml");
        Console.WriteLine(result);
    }
    
    

  • 답변 # 2

    @ canton7이 말하는 것을 수행하거나 비동기가 아닌 메서드에서 비동기 메서드를 호출하려는 경우 :

    var result = Task.Run(() => TestReader("http://somewebsite/YML.xml")).Result;
    
    

관련 자료

  • 이전 django - 이 필드는 필수입니다 Dajngo 나머지 프레임 워크
  • 다음 일반 C로 포인터를 사용하여 함수를 디자인하는 방법