/// <summary> /// 邀请群成员 /// </summary> /// <param name="id"></param> /// <param name="javascriptCallback"></param> public void newGroupMember(string id, IJavascriptCallback javascriptCallback) { var friend = DBHelper.Instance.allFriend(); var member = DBHelper.Instance.getGroupAllUser(id); foreach (var item in member) { friend = friend.Where(p => p.userID != item.userID).ToList(); } List <JSData> fed = new List <JSData>(); foreach (var item in friend) { var f = new JSData(); f.id = item.userID; f.name = item.friend_self_name; f.url = item.avatar; f.id_card = item.id_Card; fed.Add(f); } NewMemberData data = new NewMemberData(); data.friend = fed; NewMember result = new NewMember(); result.success = true; result.data = data; using (javascriptCallback) { javascriptCallback.ExecuteAsync(JsonConvert.SerializeObject(result)); } }
public void GetCatalogProductRankList(string obj, int start, int limit, IJavascriptCallback javascriptCallback) { Task.Factory.StartNew(async() => { using (javascriptCallback) { Result <List <ProductListItemViewModel> > result = new Result <List <ProductListItemViewModel> >(true); ProductListItemQueryViewModel queryEntity = JsonConvert.DeserializeObject <ProductListItemQueryViewModel>(obj); if (queryEntity == null) { result.Success = false; result.Msg = "数据转换失败!"; } else { using (DbContext db = DbContextFactory.Context) { //找出mapName var dbSet = db.Set <SysCatalog>(); SysCatalog entity = dbSet.First(o => o.ID == queryEntity.CatalogID); List <SQLiteParameter> param = new List <SQLiteParameter>() { new SQLiteParameter("@CatalogID", queryEntity.CatalogID), new SQLiteParameter("@RankLevel", queryEntity.RankNumber), new SQLiteParameter("@StartDate", queryEntity.StartDate), new SQLiteParameter("@EndDate", queryEntity.EndDate) }; string sql, fromSql, whereSql, totalSql; fromSql = $"from {entity.CatalogProductTableName} map join tb_Sys_Product p on map.ProductID = p.ID "; whereSql = "where map.CatalogID = @CatalogID "; if (!string.IsNullOrEmpty(queryEntity.Name)) { whereSql += $"AND p.Name LIKE @Name "; param.Add(new SQLiteParameter("@Name", $"%{queryEntity.Name}%")); } whereSql += $"AND map.RankLevel = @RankLevel "; whereSql += $"AND map.CreateTime Between @StartDate AND @EndDate "; sql = " select p.Name,p.ImgPath,map.RankTime,map.RankLevel " + fromSql + whereSql + "order by map.CreateTime desc, map.RankLevel asc " + $"limit {limit} offset {start}; "; totalSql = " select count(1) " + fromSql + whereSql; SQLiteParameter[] paramArray = param.ToArray(); result.Data = db.Database.SqlQuery <ProductListItemViewModel>(sql, paramArray).ToList(); result.Total = db.Database.SqlQuery <int>(totalSql, paramArray).FirstOrDefault(); } } await javascriptCallback.ExecuteAsync(JsonConvert.SerializeObject(result)); //javascriptCallback.ExecuteAsync(JsonConvert.SerializeObject(result)); } }); }
public void DetectAD(string json, IJavascriptCallback callback, IJavascriptCallback progress) { var task = new Task(() => { var files = JsonConvert.DeserializeObject <string[]>(json); var notify = new Action <int, int>((used, left) => { progress.ExecuteAsync(used, left); }); var result = CutAD.DetectAD(files, notify); var ret = result.Select(kv => { var ranges = kv.Key; var length = kv.Value; return(new { length = length * 100, ads = ranges.Select(r => new { type = r.type, count = r.count, start = r.begin * 100, end = r.end * 100, }).ToArray() }); }).ToArray(); callback.ExecuteJsonAsync(null, ret); }); task.Start(); }
public string TestCallbackFromObject(SimpleClass simpleClass) { if (simpleClass == null) { return("TestCallbackFromObject dictionary param is null"); } IJavascriptCallback javascriptCallback = simpleClass.Callback; if (javascriptCallback == null) { return("callback property not found or property is not a function"); } const int taskDelay = 1500; Task.Run(async() => { await Task.Delay(taskDelay); if (javascriptCallback != null) { using (javascriptCallback) { await javascriptCallback.ExecuteAsync("message from C# " + simpleClass.TestString + " - " + simpleClass.SubClasses[0].PropertyOne); } } }); return("waiting for callback execution..."); }
/// <summary> /// Get manga list from provider /// </summary> /// <param name="id">ID Provider</param> /// <param name="page">Page Number</param> /// <param name="javascriptCallback"></param> public void GetMangaList(int id, int page, bool update, IJavascriptCallback javascriptCallback) { var provider = (from a in Providers where a.Value.Id == id select a.Value).SingleOrDefault(); Task.Run(async() => { using (javascriptCallback) { if (provider == null) { await javascriptCallback.ExecuteAsync(""); } else { var skipCnt = (page - 1) * 20; var list = await provider.GetMangas(update); var maxPage = Math.Floor(Convert.ToDecimal(list.Count() / 20)); var sliceList = list.Skip(skipCnt).Take(20); var response = ToJson(new { maxPage, data = sliceList, }); await javascriptCallback.ExecuteAsync(response); } } }); }
/// <summary> /// Get chapter list from manga /// </summary> /// <param name="id">ID Provider</param> /// <param name="id_manga">ID Manga</param> /// <param name="page">Page Number</param> /// <param name="javascriptCallback"></param> public void GetChapterList(int id, int id_manga, int page, bool update, IJavascriptCallback javascriptCallback) { Task.Run(async() => { using (javascriptCallback) { var provider = (from a in Providers where a.Value.Id == id select a.Value).SingleOrDefault(); if (provider == null) { await javascriptCallback.ExecuteAsync(""); } else { var skipCnt = (page - 1) * 20; var manga = await provider.GetManga(id_manga); var chapters = await manga.GetChapters(update); var total = Convert.ToDecimal(chapters.Count()); var maxPage = Math.Floor(total / 20); var sliceList = chapters.Skip(skipCnt).Take(20); var response = ToJson(new { total, maxPage, data = sliceList }); await javascriptCallback.ExecuteAsync(response); } } }); }
public void DownloadChapter(int chapter_id, IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(); } }
public void DownloadManga(int manga_id, IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(); } }
public void GetDownloadStatus(int id_download, IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(); } }
/// <summary> /// Get page list from chapter /// </summary> /// <param name="id">ID Provider</param> /// <param name="id_manga">ID Manga</param> /// <param name="id_chapter">ID Chapter</param> /// <param name="javascriptCallback"></param> public void GetPageList(int id, int id_manga, int id_chapter, bool update, IJavascriptCallback javascriptCallback) { Task.Run(async() => { using (javascriptCallback) { var provider = (from a in Providers where a.Value.Id == id select a.Value).SingleOrDefault(); var manga = await provider?.GetManga(id_manga); var chapter = await manga?.GetChapter(id_chapter); var pages = await chapter?.GetPages(update); if (pages != null) { var response = ToJson(pages); await javascriptCallback.ExecuteAsync(response); } else { await javascriptCallback.ExecuteAsync(""); } } }); }
public void token(IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(SettingMenager.shard.token); } }
public void register(string sn, IJavascriptCallback callback) { if (!MachineInfo.CheckSN(sn)) { callback.ExecuteAsync(false, "注册码不能用"); return; } string parmasString = string.Format("code={0}&sn={1}", MachineInfo.MachineCode, sn); CAjax ajax = new CAjax(); ajax.postJSON("/api/terminal/register", parmasString, (jsonString) => { var data = ajax.Deserialize(jsonString); if (ajax.getIntValue(data, "code") == 200) { Config.SN = sn; (MainForm.ActiveForm as MainForm).HideSNLabel(); callback.ExecuteAsync(true); } else { callback.ExecuteAsync(false, "注册失败,请稍后再试"); } }, (msg) => { callback.ExecuteAsync(false, "网络请求错误,请稍后再试"); }, "PATCH"); callback.ExecuteAsync(true); }
public void getCarGeneralFileChecksumAsync(string carId, string fileName, IJavascriptCallback callback = null) { Task.Run(() => { var checksum = GetAcChecksum(CarsManager.Instance.GetById(carId)?.Location, FileUtils.NormalizePath(fileName)); callback?.ExecuteAsync(checksum); }).Ignore(); }
public async Task <string> JavascriptCallbackEvalPromise(string msg, IJavascriptCallback callback) { var response = await callback.ExecuteAsync(callback.Id, msg); //Echo the response return((string)response.Result); }
public async void CalcAsync( string name, IJavascriptCallback resolve, IJavascriptCallback reject) { Promisify(resolve, reject, () => /* compute i */); }
public void setName(string name, IJavascriptCallback callback) { if (name == Config.TerminalName) { callback.ExecuteAsync(true); return; } string parmasString = string.Format("code={0}&name={1}", MachineInfo.MachineCode, name); CAjax ajax = new CAjax(); ajax.postJSON("/api/terminal/name", parmasString, (jsonString) => { var data = ajax.Deserialize(jsonString); if (ajax.getIntValue(data, "code") == 200) { Config.TerminalName = name; callback.ExecuteAsync(true); } else { callback.ExecuteAsync(false, "修改名称失败,请稍后再试"); } }, (msg) => { callback.ExecuteAsync(false, "网络请求错误,请稍后再试"); }, "PATCH"); callback.ExecuteAsync(true); }
public void startOnlineRace(string ip, int port, int httpPort, IJavascriptCallback callback = null) { if (_car == null) { throw new Exception("Car is not set"); } if (_track == null) { throw new Exception("Track is not set"); } ActionExtension.InvokeInMainThread(async() => { var result = await GameWrapper.StartAsync(new Game.StartProperties { BasicProperties = new Game.BasicProperties { CarId = _car.Id, TrackId = _track.MainTrackObject.Id, TrackConfigurationId = _track.LayoutId, CarSkinId = _carSkin?.Id ?? _car.SelectedSkin?.Id ?? "" }, ModeProperties = new Game.OnlineProperties { Guid = SteamIdHelper.Instance.Value, ServerIp = ip, ServerPort = port, ServerHttpPort = httpPort, Password = InternalUtils.GetRaceUPassword(_track.IdWithLayout, ip, port), RequestedCar = _car.Id } }); callback?.ExecuteAsync(result?.IsNotCancelled); }).Ignore(); }
public void TestJSCallback(IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync("Hello from winforms and C# land!"); } }
public void Execute(IJavascriptCallback callback, string sql, IDictionary <string, object> param = null) { m_Lock.EnterReadLock(); try { using (var C = new SQLiteCommand(sql, m_Connection)) { if (param != null) { foreach (var prop in param) { C.Parameters.Add(new SQLiteParameter("@" + prop.Key, prop.Value)); } } using (var R = C.ExecuteReader()) { while (R.Read()) { var row = new object[R.FieldCount]; R.GetValues(row); callback.ExecuteAsync(row); } } } } finally { m_Lock.ExitReadLock(); } }
/// <summary> /// GET JSON文本 /// </summary> /// <param name="api">api</param> /// <param name="success">成功回调</param> /// <param name="fail">失败回调</param> public void getJSON(string api, IJavascriptCallback success = null, IJavascriptCallback fail = null) { // 本地数据 if (api.IndexOf("data/") == 0) { string filePath = Path.Combine(Config.H5Path, api.Replace("/", "\\")); if (File.Exists(filePath)) { string jsonString = File.ReadAllText(filePath); if (success != null) { success.ExecuteAsync(jsonString); } return; } } this.getJSON(api, (jsonString) => { if (success != null) { success.ExecuteAsync(jsonString); } }, (message) => { if (fail != null) { fail.ExecuteAsync(message); } }); }
public void Play(string filename, int start, int end, IJavascriptCallback complete) { var task = new Task(() => { Stop(); var ffplayPath = Path.Combine(Environment.CurrentDirectory, "../ffmpeg/ffplay.exe"); ffplayProcess = new Process(); ffplayProcess.StartInfo.FileName = ffplayPath; var fstart = (float)start / 1000; var fend = (float)end / 1000; var duration = fend - fstart; var arguments = String.Format( "-i \"{0}\" -ss {1} -t {2} -nodisp -autoexit", filename.Replace("\"", "\\\""), fstart, duration ); Console.WriteLine(arguments); ffplayProcess.StartInfo.Arguments = arguments; ffplayProcess.StartInfo.UseShellExecute = false; ffplayProcess.StartInfo.RedirectStandardError = true; ffplayProcess.StartInfo.RedirectStandardOutput = true; ffplayProcess.StartInfo.CreateNoWindow = true; ffplayProcess.Start(); ffplayProcess.StandardError.ReadToEnd(); ffplayProcess.StandardOutput.ReadToEnd(); ffplayProcess.WaitForExit(); ffplayProcess = null; complete.ExecuteAsync(); }); task.Start(); }
public void userId(IJavascriptCallback javascriptCallback) { using (javascriptCallback) { javascriptCallback.ExecuteAsync(SettingMenager.shard.userID); } }
public void AddListener([CanBeNull] string method, [CanBeNull] IJavascriptCallback callback) { if (callback == null) { throw new ArgumentException("callback не может быть null"); } if (callback.IsDisposed || !callback.CanExecute) { throw new ArgumentException(string.Format("{0}.IsDisposed = {1} или {2}.CanExecute = {3}", (object)nameof(callback), (object)callback.IsDisposed, (object)nameof(callback), (object)callback.CanExecute)); } if (string.IsNullOrWhiteSpace(method)) { throw new ArgumentException("method не может быть null"); } if (!this._listeners.ContainsKey(method)) { this._listeners.TryAdd(method, new HashSet <IJavascriptCallback>() { callback }); } else { this._listeners[method].Add(callback); } }
public void PlayVideo(string videoUrl, string tweetUrl, string username, IJavascriptCallback callShowOverlay) { string playerPath = Config.VideoPlayerPath; if (playerPath == null || !File.Exists(playerPath)) { if (videoPlayer == null) { videoPlayer = new VideoPlayer(this); videoPlayer.ProcessExited += (sender, args) => browser.HideVideoOverlay(true); } callShowOverlay.ExecuteAsync(); callShowOverlay.Dispose(); videoPlayer.Launch(videoUrl, tweetUrl, username); } else { callShowOverlay.Dispose(); string quotedUrl = '"' + videoUrl + '"'; string playerArgs = Config.VideoPlayerPathArgs == null ? quotedUrl : Config.VideoPlayerPathArgs + ' ' + quotedUrl; try{ using (Process.Start(playerPath, playerArgs)){} }catch (Exception e) { Program.Reporter.HandleException("Error Opening Video Player", "Could not open the video player.", true, e); } } AnalyticsFile.VideoPlays.Trigger(); }
public async void CalcAsync( string name, IJavascriptCallback resolve, IJavascriptCallback reject) { try { if (resolve.IsDisposed) { return; } int i = /* compute i */; if (!resolve.IsDisposed) { await resolve.ExecuteAsync(i); } } catch (Exception e) { if (!reject.IsDisposed) { await reject.ExecuteAsync(e.ToString()); } } }
public void getCarDataChecksumAsync(string carId, IJavascriptCallback callback = null) { Task.Run(() => { var checksum = GetAcChecksum(CarsManager.Instance.GetById(carId)?.Location, @"data.acd"); callback?.ExecuteAsync(checksum); }).Ignore(); }
public void ExecuteInUI(Control controlToInvoke, IJavascriptCallback callback, params object[] param) { //AutoResetEvent JSSyncAutoResetEvent = new AutoResetEvent(false); controlToInvoke.InvokeOnUiThreadIfRequired(() => { var task = callback.ExecuteAsync(param); }); }
/// <summary> /// 获取信息 /// </summary> /// <param name="callback">回调函数</param> public void getInfo(IJavascriptCallback callback) { mybgw.runDoWork("getInfo", callback); //MessageBox.Show("我是webform框架弹出的"); ////执行前台的回调函数 //callback.ExecuteAsync("这是webform调用的"); }
//后台执行完成事件 private void Bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Result != null) { IJavascriptCallback cb = (IJavascriptCallback)e.Result; //执行回调 cb.ExecuteAsync("123"); } }
public void create(IJavascriptCallback javascriptCallback) { NewGroupForm form = (NewGroupForm)Application.OpenForms["NewGroupForm"]; using (javascriptCallback) { javascriptCallback.ExecuteAsync(1); } }
public void TestCallback(IJavascriptCallback javascriptCallback) { const int taskDelay = 1500; Task.Run(async () => { await Task.Delay(taskDelay); using (javascriptCallback) { await javascriptCallback.ExecuteAsync("This callback from C# was delayed " + taskDelay + "ms"); } }); }
public void TestCallbackStruct(IJavascriptCallback javascriptCallback) { const int taskDelay = 500; Task.Run(async () => { await Task.Delay(taskDelay); using (javascriptCallback) { CallbackResponseStruct response = new CallbackResponseStruct("Test"); await javascriptCallback.ExecuteAsync(response); } }); }
public void TestCallback(IJavascriptCallback javascriptCallback) { const int taskDelay = 1500; Task.Run(async () => { await Task.Delay(taskDelay); using (javascriptCallback) { //NOTE: Classes are not supported, simple structs are var response = new CallbackResponseStruct("This callback from C# was delayed " + taskDelay + "ms"); await javascriptCallback.ExecuteAsync(response); } }); }
public void TestCallbackClass(IJavascriptCallback javascriptCallback) { const int taskDelay = 500; Task.Run(async () => { await Task.Delay(taskDelay); using (javascriptCallback) { CallbackResponseClass response = new CallbackResponseClass("Test"); try { javascriptCallback.ExecuteAsync(response); } catch (Exception ex) { javascriptCallback.ExecuteAsync(string.Format("Error: {0}", ex.Message)); } } }); }
public void TestCallbackException(IJavascriptCallback errorCallback, IJavascriptCallback errorCallbackResult) { const int taskDelay = 500; Task.Run(async () => { await Task.Delay(taskDelay); using (errorCallback) { JavascriptResponse result = await errorCallback.ExecuteAsync("This callback from C# was delayed " + taskDelay + "ms"); string resultMessage; if (result.Success) { resultMessage = "Fatal: No Exception thrown in error callback"; } else { resultMessage = "Exception Thrown: " + result.Message; } await errorCallbackResult.ExecuteAsync(resultMessage); } }); }