我花了最后几天试图弄明白这一点没有运气,我希望你能帮帮忙,我对c#很新。
下面是我的控制台应用程序的一部分,两种不同的方法在他们自己的不同速度运行的独立计时器中,因此它们不能使用相同的方法。我正在使用通过httpclient发送json的JSON.net / JObject。
我正在尝试访问
的结果JObject Grab = JObject.Parse(httpResponse(@"https://api.example.jp/json.json").Result);
string itemTitle = (string)Grab["channel"]["item"][0]["title"];
来自不同的方法,使用此代码
Console.WriteLine(itemTitle);
我尝试了很多不同的方法,但都没有成功。 以下是关于Json.net的完整代码部分。
namespace ConsoleApplication3
{
internal class Program
{
...other code
public static async Task<string> httpResponse(string url)
{
HttpClientHandler httpHandler = new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
using (var httpClient = new HttpClient(httpHandler))
return await httpClient.GetStringAsync(url);
}
public static void JSONUpdateTimer(object sender, ElapsedEventArgs e)
{
JObject Grab = JObject.Parse(httpResponse(@"https://api.example.jp/json.json").Result);
string itemTitle = (string)Grab["channel"]["item"][0]["title"];
Console.WriteLine(itemTitle);
JSONUpdate.Interval = JSONUpdateInterval();
JSONUpdate.Start();
}
public static void SecondTimer(object source, ElapsedEventArgs e)
{
Console.WriteLine(itemTitle);
...other Commands using "itemTitle"
}
}
}
我有一种不好的感觉,我错过了一些如此明显的东西,如果它指出我将面对手掌。但我会感激任何帮助。
答案 0 :(得分:3)
在任何方法之外声明一个名为itemTitle的字符串字段作为该类的成员。
internal class Program
{
static string itemTitle;
//other code...
}
在你的方法中,不要声明一个新变量,只需引用该字段。
public static void JSONUpdateTimer(object sender, ElapsedEventArgs e)
{
//...
itemTitle = (string)Grab["channel"]["item"][0]["title"];
//...
}
在方法中声明的变量本地作用于该方法,并且不存在于该方法之外。