mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-08-16 06:31:42 +02:00
Configuration
Core
Data
Plugins
Properties
Resources
Updates
bld
lib
subprocess
Properties
Program.cs
TweetDuck.Browser.csproj
packages.config
video
.gitattributes
.gitignore
LICENSE.md
Program.cs
README.md
Reporter.cs
TweetDuck.csproj
TweetDuck.sln
TweetDuck.sln.DotSettings
packages.config
50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Threading.Tasks;
|
|
using CefSharp.BrowserSubprocess;
|
|
|
|
namespace TweetDuck.Browser{
|
|
static class Program{
|
|
internal const string Version = "1.4.2";
|
|
|
|
private static int Main(string[] args){
|
|
SubProcess.EnableHighDPISupport();
|
|
|
|
string FindArg(string key){
|
|
return Array.Find(args, arg => arg.StartsWith(key, StringComparison.OrdinalIgnoreCase)).Substring(key.Length);
|
|
}
|
|
|
|
const string typePrefix = "--type=";
|
|
const string parentIdPrefix = "--host-process-id=";
|
|
|
|
if (!int.TryParse(FindArg(parentIdPrefix), out int parentId)){
|
|
return 0;
|
|
}
|
|
|
|
Task.Factory.StartNew(() => KillWhenHung(parentId), TaskCreationOptions.LongRunning);
|
|
|
|
if (FindArg(typePrefix) == "renderer"){
|
|
using(SubProcess subProcess = new SubProcess(args)){
|
|
return subProcess.Run();
|
|
}
|
|
}
|
|
else{
|
|
return SubProcess.ExecuteProcess();
|
|
}
|
|
}
|
|
|
|
private static async void KillWhenHung(int parentId){
|
|
try{
|
|
using(Process process = Process.GetProcessById(parentId)){
|
|
process.WaitForExit();
|
|
}
|
|
}catch{
|
|
// ded
|
|
}
|
|
|
|
await Task.Delay(10000);
|
|
Environment.Exit(0);
|
|
}
|
|
}
|
|
}
|