} //任务的GID public async void GetFileInfo() //获得文件信息 { JRCtler.JsonRpcRes x = await Aria2Methords.GetFiles(Gid); if (x.Result.Count == 1) { string filepath = x.Result[0].path; if (filepath != null) { FileName = filepath.Substring(filepath.LastIndexOf(@"/") + 1); FileNameSource = FileNameSources.Path; } else { string uri = x.Result[0].uris[0].uri; FileName = uri.Substring(uri.LastIndexOf(@"/") + 1); FileNameSource = FileNameSources.Uri; } } else { string path = x.Result[0].path; int count = x.Result.Count; FileName = path.Substring(path.IndexOf(@"/") + 1, path.LastIndexOf(@"/")) + ",共计" + count.ToString() + "个文件"; } OnPropertyChanged("FileName"); }
/// <summary> /// 关闭Aria2C,调用Aria2自己的方法 /// </summary> public static void ShutDown() { ArrayList Params = new ArrayList { "token:" + Stc.GloConf.Rpc_secret, }; JRCtler.JsonRpcRes Result = Stc.Line.JsonRpc("aria2.shutdown", Params); }
public static async Task <JRCtler.JsonRpcRes> GetGlobalStat() { ArrayList Params = new ArrayList { "token:" + Stc.GloConf.Rpc_secret, }; JRCtler.JsonRpcRes Result = await Stc.Line.JsonRpcAsync("aria2.getGlobalStat", Params); return(Result); }
public static async Task <JRCtler.JsonRpcRes> GetFiles(string Gid) { ArrayList Params = new ArrayList { "token:" + Stc.GloConf.Rpc_secret, Gid }; JRCtler.JsonRpcRes Result = await Stc.Line.JsonRpcAsync("aria2.getFiles", Params); return(Result); }
private async void Refresh()//更新任务列表 { JRCtler.JsonRpcRes x = await Aria2Methords.TellActive(); CheckRefreshResult(x); JRCtler.JsonRpcRes y = await Aria2Methords.TellWaiting(); CheckRefreshResult(y); JRCtler.JsonRpcRes z = await Aria2Methords.TellStopped(); CheckRefreshResult(z); }
public static async Task <JRCtler.JsonRpcRes> TellActive() { string[] Keys = new string[] { "status", "totalLength", "completedLength", "downloadSpeed", "gid" }; ArrayList Params = new ArrayList { "token:" + Stc.GloConf.Rpc_secret, Keys }; JRCtler.JsonRpcRes Result = await Stc.Line.JsonRpcAsync("aria2.tellActive", Params); return(Result); }
public static async Task <JRCtler.JsonRpcRes> TellStatus(string Gid, string[] Keys) { ArrayList Params = new ArrayList { "token:" + Stc.GloConf.Rpc_secret, Gid, Keys }; JRCtler.JsonRpcRes Result = await Stc.Line.JsonRpcAsync("aria2.tellStatus", Params); return(Result); }
public async Task Refresh()//刷新任务状态 { if (OughtToRefresh <= 0) { JRCtler.JsonRpcRes e = await Aria2Methords.TellStatus(Gid); InformationRefresh(e); } else { OughtToRefresh--; } }
private void CheckRefreshResult(JRCtler.JsonRpcRes e)//检查Refresh方法中异步返回的结果 { foreach (dynamic s in e.Result) { JRCtler.JsonRpcRes a = new JRCtler.JsonRpcRes { Result = s }; string g = a.Result.gid; if (GidList.Contains(g) != true) { GidList.Add(g); string Status = a.Result.status; if (Status != "complete") { Add(new TaskLite(a)); } else { TaskFinished?.Invoke(new TaskLite(a)); } } } }
public TaskLite(JRCtler.JsonRpcRes e)//构造函数 { InformationRefresh(e); }
private void InformationRefresh(JRCtler.JsonRpcRes e) { //计算当前下载速度 double SpeedLong = e.Result.downloadSpeed; if (SpeedLong / 1024 == 0) { Speed = Math.Round(SpeedLong, 2).ToString() + "B/S"; } else if (SpeedLong / 1048576 == 0) { Speed = Math.Round((SpeedLong / 1024), 2).ToString() + "KB/S"; } else { Speed = Math.Round((SpeedLong / 1048578), 2).ToString() + "MB/S"; } OnPropertyChanged("Speed"); //更新状态 string NewStatus = e.Result.status; if (Status != NewStatus) { Status = NewStatus; switch (Status) { case "active": State = "none"; break; case "waiting": State = "wait"; OughtToRefresh = 5; break; case "paused": State = "wait"; OughtToRefresh = 5; break; case "error": State = "error"; OughtToRefresh = 10; break; case "complete": State = "none"; TaskFinished?.Invoke(this); OughtToRefresh = 10; break; case "removed": State = "error"; OughtToRefresh = 10; break; default: State = "wait"; OughtToRefresh = 5; break; } OnPropertyChanged("State"); } //更新进度 string CompletedNew = e.Result.completedLength; Total = e.Result.totalLength; if (CompletedNew != Completed) { Completed = CompletedNew; OnPropertyChanged("Progress"); } else if (CompletedNew == "0") { State = "wait"; OnPropertyChanged("State"); } Gid = e.Result.gid; if (FileName == null || FileNameSource != FileNameSources.Path) { GetFileInfo(); } e = null; }