diff --git a/v2rayN/ServiceLib/Common/DownloaderHelper.cs b/v2rayN/ServiceLib/Common/DownloaderHelper.cs index fe468566..2aaa2371 100644 --- a/v2rayN/ServiceLib/Common/DownloaderHelper.cs +++ b/v2rayN/ServiceLib/Common/DownloaderHelper.cs @@ -36,7 +36,7 @@ namespace ServiceLib.Common } }; - using var downloader = new Downloader.DownloadService(downloadOpt); + await using var downloader = new Downloader.DownloadService(downloadOpt); downloader.DownloadFileCompleted += (sender, value) => { if (value.Error != null) @@ -46,12 +46,12 @@ namespace ServiceLib.Common }; using var cts = new CancellationTokenSource(); - using var stream = await downloader.DownloadFileTaskAsync(address: url, cts.Token).WaitAsync(TimeSpan.FromSeconds(timeout), cts.Token); + await using var stream = await downloader.DownloadFileTaskAsync(address: url, cts.Token).WaitAsync(TimeSpan.FromSeconds(timeout), cts.Token); using StreamReader reader = new(stream); downloadOpt = null; - return reader.ReadToEnd(); + return await reader.ReadToEndAsync(cts.Token); } public async Task DownloadDataAsync4Speed(IWebProxy webProxy, string url, IProgress progress, int timeout) @@ -72,11 +72,11 @@ namespace ServiceLib.Common } }; - DateTime totalDatetime = DateTime.Now; - int totalSecond = 0; + var totalDatetime = DateTime.Now; + var totalSecond = 0; var hasValue = false; double maxSpeed = 0; - using var downloader = new Downloader.DownloadService(downloadOpt); + await using var downloader = new Downloader.DownloadService(downloadOpt); //downloader.DownloadStarted += (sender, value) => //{ // if (progress != null) @@ -86,7 +86,7 @@ namespace ServiceLib.Common //}; downloader.DownloadProgressChanged += (sender, value) => { - TimeSpan ts = (DateTime.Now - totalDatetime); + var ts = (DateTime.Now - totalDatetime); if (progress != null && ts.Seconds > totalSecond) { hasValue = true; @@ -112,7 +112,7 @@ namespace ServiceLib.Common //progress.Report("......"); using var cts = new CancellationTokenSource(); cts.CancelAfter(timeout * 1000); - using var stream = await downloader.DownloadFileTaskAsync(address: url, cts.Token); + await using var stream = await downloader.DownloadFileTaskAsync(address: url, cts.Token); downloadOpt = null; } @@ -145,7 +145,7 @@ namespace ServiceLib.Common var progressPercentage = 0; var hasValue = false; - using var downloader = new Downloader.DownloadService(downloadOpt); + await using var downloader = new Downloader.DownloadService(downloadOpt); downloader.DownloadStarted += (sender, value) => { progress?.Report(0); diff --git a/v2rayN/ServiceLib/Common/FileManager.cs b/v2rayN/ServiceLib/Common/FileManager.cs index 4eb97a51..70b09314 100644 --- a/v2rayN/ServiceLib/Common/FileManager.cs +++ b/v2rayN/ServiceLib/Common/FileManager.cs @@ -23,7 +23,7 @@ namespace ServiceLib.Common { try { - using FileStream fs = File.Create(fileName); + using var fs = File.Create(fileName); using GZipStream input = new(new MemoryStream(content), CompressionMode.Decompress, false); input.CopyTo(fs); } @@ -38,8 +38,8 @@ namespace ServiceLib.Common try { FileInfo fileInfo = new(fileName); - using FileStream originalFileStream = fileInfo.OpenRead(); - using FileStream decompressedFileStream = File.Create(toName != null ? Path.Combine(toPath, toName) : toPath); + using var originalFileStream = fileInfo.OpenRead(); + using var decompressedFileStream = File.Create(toName != null ? Path.Combine(toPath, toName) : toPath); using GZipStream decompressionStream = new(originalFileStream, CompressionMode.Decompress); decompressionStream.CopyTo(decompressedFileStream); } @@ -54,7 +54,7 @@ namespace ServiceLib.Common return NonExclusiveReadAllText(path, Encoding.Default); } - public static string NonExclusiveReadAllText(string path, Encoding encoding) + private static string NonExclusiveReadAllText(string path, Encoding encoding) { try { @@ -73,8 +73,8 @@ namespace ServiceLib.Common { try { - using ZipArchive archive = ZipFile.OpenRead(fileName); - foreach (ZipArchiveEntry entry in archive.Entries) + using var archive = ZipFile.OpenRead(fileName); + foreach (var entry in archive.Entries) { if (entry.Length == 0) { @@ -110,7 +110,7 @@ namespace ServiceLib.Common } try { - using ZipArchive archive = ZipFile.OpenRead(fileName); + using var archive = ZipFile.OpenRead(fileName); return archive.Entries.Select(entry => entry.FullName).ToList(); } catch (Exception ex) @@ -149,13 +149,13 @@ namespace ServiceLib.Common throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}"); // Cache directories before we start copying - DirectoryInfo[] dirs = dir.GetDirectories(); + var dirs = dir.GetDirectories(); // Create the destination directory Directory.CreateDirectory(destinationDir); // Get the files in the source directory and copy to the destination directory - foreach (FileInfo file in dir.GetFiles()) + foreach (var file in dir.GetFiles()) { if (Utils.IsNotEmpty(ignoredName) && file.Name.Contains(ignoredName)) { @@ -165,16 +165,16 @@ namespace ServiceLib.Common { continue; } - string targetFilePath = Path.Combine(destinationDir, file.Name); + var targetFilePath = Path.Combine(destinationDir, file.Name); file.CopyTo(targetFilePath); } // If recursive and copying subdirectories, recursively call this method if (recursive) { - foreach (DirectoryInfo subDir in dirs) + foreach (var subDir in dirs) { - string newDestinationDir = Path.Combine(destinationDir, subDir.Name); + var newDestinationDir = Path.Combine(destinationDir, subDir.Name); CopyDirectory(subDir.FullName, newDestinationDir, true, ignoredName); } } diff --git a/v2rayN/ServiceLib/Common/HttpClientHelper.cs b/v2rayN/ServiceLib/Common/HttpClientHelper.cs index bd671fee..cabc3f85 100644 --- a/v2rayN/ServiceLib/Common/HttpClientHelper.cs +++ b/v2rayN/ServiceLib/Common/HttpClientHelper.cs @@ -27,7 +27,7 @@ namespace ServiceLib.Common try { - HttpResponseMessage response = await httpClient.GetAsync(url); + var response = await httpClient.GetAsync(url); return await response.Content.ReadAsStringAsync(); } catch @@ -84,8 +84,8 @@ namespace ServiceLib.Common var total = response.Content.Headers.ContentLength ?? -1L; var canReportProgress = total != -1 && progress != null; - using var stream = await response.Content.ReadAsStreamAsync(token); - using var file = File.Create(fileName); + await using var stream = await response.Content.ReadAsStreamAsync(token); + await using var file = File.Create(fileName); var totalRead = 0L; var buffer = new byte[1024 * 1024]; var progressPercentage = 0; @@ -98,7 +98,7 @@ namespace ServiceLib.Common totalRead += read; if (read == 0) break; - file.Write(buffer, 0, read); + await file.WriteAsync(buffer, 0, read, token); if (canReportProgress) { @@ -133,13 +133,13 @@ namespace ServiceLib.Common //var total = response.Content.Headers.ContentLength.HasValue ? response.Content.Headers.ContentLength.Value : -1L; //var canReportProgress = total != -1 && progress != null; - using var stream = await response.Content.ReadAsStreamAsync(token); + await using var stream = await response.Content.ReadAsStreamAsync(token); var totalRead = 0L; var buffer = new byte[1024 * 64]; var isMoreToRead = true; - string progressSpeed = string.Empty; - DateTime totalDatetime = DateTime.Now; - int totalSecond = 0; + var progressSpeed = string.Empty; + var totalDatetime = DateTime.Now; + var totalSecond = 0; do { @@ -168,7 +168,7 @@ namespace ServiceLib.Common totalRead += read; - TimeSpan ts = (DateTime.Now - totalDatetime); + var ts = (DateTime.Now - totalDatetime); if (progress != null && ts.Seconds > totalSecond) { totalSecond = ts.Seconds; diff --git a/v2rayN/ServiceLib/Common/Job.cs b/v2rayN/ServiceLib/Common/Job.cs index 0cd623fb..4acf7520 100644 --- a/v2rayN/ServiceLib/Common/Job.cs +++ b/v2rayN/ServiceLib/Common/Job.cs @@ -8,7 +8,7 @@ namespace ServiceLib.Common * http://stackoverflow.com/questions/6266820/working-example-of-createjobobject-setinformationjobobject-pinvoke-in-net */ - public class Job : IDisposable + public sealed class Job : IDisposable { private IntPtr handle = IntPtr.Zero; @@ -73,7 +73,7 @@ namespace ServiceLib.Common GC.SuppressFinalize(this); } - protected virtual void Dispose(bool disposing) + private void Dispose(bool disposing) { if (disposed) return; disposed = true; diff --git a/v2rayN/ServiceLib/Common/JsonUtils.cs b/v2rayN/ServiceLib/Common/JsonUtils.cs index d7650d2c..40d0cdfc 100644 --- a/v2rayN/ServiceLib/Common/JsonUtils.cs +++ b/v2rayN/ServiceLib/Common/JsonUtils.cs @@ -69,7 +69,7 @@ namespace ServiceLib.Common /// public static string Serialize(object? obj, bool indented = true) { - string result = string.Empty; + var result = string.Empty; try { if (obj == null) @@ -112,7 +112,7 @@ namespace ServiceLib.Common } try { - using FileStream file = File.Create(filePath); + using var file = File.Create(filePath); var options = new JsonSerializerOptions { diff --git a/v2rayN/ServiceLib/Common/QRCodeHelper.cs b/v2rayN/ServiceLib/Common/QRCodeHelper.cs index 7e6e0d08..82d6125e 100644 --- a/v2rayN/ServiceLib/Common/QRCodeHelper.cs +++ b/v2rayN/ServiceLib/Common/QRCodeHelper.cs @@ -7,7 +7,7 @@ namespace ServiceLib.Common public static byte[]? GenQRCode(string? url) { using QRCodeGenerator qrGenerator = new(); - using QRCodeData qrCodeData = qrGenerator.CreateQrCode(url ?? string.Empty, QRCodeGenerator.ECCLevel.Q); + using var qrCodeData = qrGenerator.CreateQrCode(url ?? string.Empty, QRCodeGenerator.ECCLevel.Q); using PngByteQRCode qrCode = new(qrCodeData); return qrCode.GetGraphic(20); } diff --git a/v2rayN/ServiceLib/Common/QueryableExtension.cs b/v2rayN/ServiceLib/Common/QueryableExtension.cs index 76767656..b8e91433 100644 --- a/v2rayN/ServiceLib/Common/QueryableExtension.cs +++ b/v2rayN/ServiceLib/Common/QueryableExtension.cs @@ -17,7 +17,7 @@ namespace ServiceLib.Common private static IOrderedQueryable _OrderBy(IQueryable query, string propertyName, bool isDesc) { - string methodname = (isDesc) ? "OrderByDescendingInternal" : "OrderByInternal"; + var methodname = (isDesc) ? "OrderByDescendingInternal" : "OrderByInternal"; var memberProp = typeof(T).GetProperty(propertyName); diff --git a/v2rayN/ServiceLib/Common/SemanticVersion.cs b/v2rayN/ServiceLib/Common/SemanticVersion.cs index beea6acc..fd236c89 100644 --- a/v2rayN/ServiceLib/Common/SemanticVersion.cs +++ b/v2rayN/ServiceLib/Common/SemanticVersion.cs @@ -28,14 +28,14 @@ } this.version = version.RemovePrefix('v'); - string[] parts = this.version.Split('.'); + var parts = this.version.Split('.'); if (parts.Length == 2) { this.major = int.Parse(parts[0]); this.minor = int.Parse(parts[1]); this.patch = 0; } - else if (parts.Length == 3 || parts.Length == 4) + else if (parts.Length is 3 or 4) { this.major = int.Parse(parts[0]); this.minor = int.Parse(parts[1]); diff --git a/v2rayN/ServiceLib/Common/SqliteHelper.cs b/v2rayN/ServiceLib/Common/SqliteHelper.cs index 9faa72ba..ca34319e 100644 --- a/v2rayN/ServiceLib/Common/SqliteHelper.cs +++ b/v2rayN/ServiceLib/Common/SqliteHelper.cs @@ -11,7 +11,7 @@ namespace ServiceLib.Common private SQLiteConnection _db; private SQLiteAsyncConnection _dbAsync; private static readonly object objLock = new(); - public readonly string _configDB = "guiNDB.db"; + private readonly string _configDB = "guiNDB.db"; public SQLiteHelper() { diff --git a/v2rayN/ServiceLib/Common/StringEx.cs b/v2rayN/ServiceLib/Common/StringEx.cs index eb9bdafe..81965ada 100644 --- a/v2rayN/ServiceLib/Common/StringEx.cs +++ b/v2rayN/ServiceLib/Common/StringEx.cs @@ -25,21 +25,14 @@ namespace ServiceLib.Common return chars.Contains(s[0]); } - public static bool IsWhiteSpace(this string value) + private static bool IsWhiteSpace(this string value) { - foreach (char c in value) - { - if (char.IsWhiteSpace(c)) continue; - - return false; - } - return true; + return value.All(char.IsWhiteSpace); } public static IEnumerable NonWhiteSpaceLines(this TextReader reader) { - string? line; - while ((line = reader.ReadLine()) != null) + while (reader.ReadLine() is { } line) { if (line.IsWhiteSpace()) continue; yield return line; @@ -53,26 +46,12 @@ namespace ServiceLib.Common public static string RemovePrefix(this string value, char prefix) { - if (value.StartsWith(prefix)) - { - return value.Substring(1); - } - else - { - return value; - } + return value.StartsWith(prefix) ? value[1..] : value; } public static string RemovePrefix(this string value, string prefix) { - if (value.StartsWith(prefix)) - { - return value.Substring(prefix.Length); - } - else - { - return value; - } + return value.StartsWith(prefix) ? value[prefix.Length..] : value; } public static string UpperFirstChar(this string value) @@ -82,17 +61,12 @@ namespace ServiceLib.Common return string.Empty; } - return char.ToUpper(value[0]) + value.Substring(1); + return char.ToUpper(value[0]) + value[1..]; } public static string AppendQuotes(this string value) { - if (string.IsNullOrEmpty(value)) - { - return string.Empty; - } - - return $"\"{value}\""; + return string.IsNullOrEmpty(value) ? string.Empty : $"\"{value}\""; } } } \ No newline at end of file diff --git a/v2rayN/ServiceLib/Common/YamlUtils.cs b/v2rayN/ServiceLib/Common/YamlUtils.cs index f87fd63c..94d572b5 100644 --- a/v2rayN/ServiceLib/Common/YamlUtils.cs +++ b/v2rayN/ServiceLib/Common/YamlUtils.cs @@ -21,7 +21,7 @@ namespace ServiceLib.Common .Build(); try { - T obj = deserializer.Deserialize(str); + var obj = deserializer.Deserialize(str); return obj; } catch (Exception ex) @@ -36,9 +36,9 @@ namespace ServiceLib.Common /// /// /// - public static string ToYaml(Object? obj) + public static string ToYaml(object? obj) { - string result = string.Empty; + var result = string.Empty; if (obj == null) { return result;