解析 .net SDK 获取对象
Parse .net SDK Get Object
我一直在尝试 return 结果的 string
但它没有 return 任何东西。当我做 Console.WriteLine
它显示 link.
但是行:
s = nzk.Get<string>("link");
什么都不做,我也不知道为什么。
这是我的代码:
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();
}
}
这里有一个小例子来说明你的问题:
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;
}
您的输出将如下所示:
I am empty
为什么?要处理的是 ContinueWith()
函数(参见 msdn)。
ContinueWith
returns 你是任务对象。您必须等待此任务,而在您的代码中您没有等待它。
在您的任务对象上调用 wait 如此简单的解决方案。
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;
Here 有关 C# 异步编程的更多信息。
编辑:更多信息
您将看到控制台输出,因为您的任务无论如何都是 运行。但在您返回字符串后它将是 运行。
我一直在尝试 return 结果的 string
但它没有 return 任何东西。当我做 Console.WriteLine
它显示 link.
但是行:
s = nzk.Get<string>("link");
什么都不做,我也不知道为什么。
这是我的代码:
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();
}
}
这里有一个小例子来说明你的问题:
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;
}
您的输出将如下所示:
I am empty
为什么?要处理的是 ContinueWith()
函数(参见 msdn)。
ContinueWith
returns 你是任务对象。您必须等待此任务,而在您的代码中您没有等待它。
在您的任务对象上调用 wait 如此简单的解决方案。
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;
Here 有关 C# 异步编程的更多信息。
编辑:更多信息
您将看到控制台输出,因为您的任务无论如何都是 运行。但在您返回字符串后它将是 运行。