首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析.net SDK Get对象

解析.net SDK Get对象
EN

Stack Overflow用户
提问于 2017-11-04 15:18:49
回答 1查看 264关注 0票数 2

我一直试图返回结果的string,但它没有返回任何东西。当我做Console.WriteLine时,它会显示链接。

但这句话:

代码语言:javascript
复制
s = nzk.Get<string>("link");

什么都没做,我也不知道为什么。

这是我的密码:

代码语言:javascript
复制
public string getlink(String ID)
{
    ParseClient.Initialize(new ParseClient.Configuration
    {
        ApplicationId = "xxxxxxxxxxxxxx5335c1fxxx0f19efxxxx06787e",
        Server = "http://api.assintates.net/parse/"
    });
    string s = "";
    ParseQuery<ParseObject> query = ParseObject.GetQuery("test");
    query.GetAsync(ID).ContinueWith(t =>
    {
        ParseObject nzk = t.Result;
        Console.WriteLine(nzk.Get<string>("link"));  // this works 
        s = nzk.Get<string>("link");// this doesn't work 
    });
    return s;
}


class Program
{
    static void Main(string[] args)
    {

        g_get x = new g_get();
        Console.WriteLine(x.getlink("iLQLJKPoJA")); // shows nothing since i initialized the s with ""
        Console.ReadLine();

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-04 16:32:22

下面是一个演示您的问题的小示例:

代码语言:javascript
复制
static void Main(string[] args)
{
    Console.WriteLine(GetString());

    Console.ReadLine();
}

private static async Task TimeConsumingTask()
{
    await Task.Run(() => System.Threading.Thread.Sleep(100));
}

private static string GetString()
{
    string s = "I am empty";
    TimeConsumingTask().ContinueWith(t =>
    {
        s = "GetString was called";
    });

    return s;
}

您的输出如下:

代码语言:javascript
复制
I am empty

为什么?需要处理的是ContinueWith()-function (参见msdn )。ContinueWith返回任务对象。你必须等待这个任务,在你的代码中你没有等待它。

所以简单的解决方案在任务对象上调用

代码语言:javascript
复制
    string s = "";
    ParseQuery<ParseObject> query = ParseObject.GetQuery("test");
    query.GetAsync(ID).ContinueWith(t =>
    {
        ParseObject nzk = t.Result;
        Console.WriteLine(nzk.Get<string>("link"));  // this works 
        s = nzk.Get<string>("link");// this doesn't work 
    }).Wait();
    return s;

这里有关C#异步编程的更多信息。

编辑:更多信息

您将看到控制台输出,因为您的任务无论如何都会运行。但是它将在您返回字符串之后运行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47112232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档