MonoTouch从Task返回一个字符串

时间:2014-04-03 15:39:10

标签: xamarin.ios task

我使用以下代码使用任务

在更新UI中调用Web服务
//------- REFRESH BOOK LIST ------
    public Task<string> GetBookList()
    {
        return Task.Factory.StartNew(() => {

            // GET BOOK LIST
            WebServiceController webServices = new WebServiceController ();
            string bookList = webServices.GetBookList ();

            if (bookList.Contains("BooksList")) {

                // PARSE
                ParseListData parseData = new ParseListData ();
                parseData.ParseList (bookList);

            }
                            return bookList;

        });

    }

我使用

调用此代码
GetBookList ().ContinueWith (task => {

    if (task.IsFaulted) {
        // STOP ACTIVITY INDICATOR
        RemoveActivityIndicator (true);

        throw new AggregateException (task.Exception.InnerException.Message);
    }

    // RUNS WHEN TASK IS FINISHED
    InvokeOnMainThread (() => {
            // STOP ACTIVITY INDICATOR
            RemoveActivityIndicator (true);
            string bookList = task.Result;
            if (bookList.Contains("Error:") || !bookList.Contains("BooksList"))
                    {
                     // SHOW ERROR MESSAGE

                    }
                });

            });

如果返回字符串(bookList)中有错误,那么我想检查bookList.Contains(“Error:”),如上所示并显示错误消息。问题在于bookList字符串是在Task GetBookList()函数中分配的。如何在GetBookList().ContinueWith中获取该值以显示错误。

如何在上面的情况下编写一个Task来返回一个字符串。

1 个答案:

答案 0 :(得分:0)

使用Task<string>,然后可以使用Task的Result属性存储String值。