using CloudBuilder.AI.Service; using CloudBuilder.Core.DatabaseAccessor.Entity; using CloudBuilder.Core.DependencyInjection.Task; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Transactions; namespace CloudBuilder.Topshelf.Task.AI { //task:WordInsertTask encoding:utf-8 file_path:D:\NET8\AI\Novel.txt public class WordInsertTask : IScheduleTask { private readonly IApplicationService service; public WordInsertTask(IApplicationService service) { this.service = service; } public void Run(Dictionary bodyDict) { IAiWordService aiService = service.ServiceProvider.GetService(); string encoding = "utf-8"; if (bodyDict.ContainsKey("encoding")) encoding = bodyDict["encoding"]; else Console.WriteLine("文件字符集" + encoding); string fileName = null; if (bodyDict.ContainsKey("encoding")) fileName = bodyDict["file_path"]; else Console.WriteLine("文件路径不存在"); System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); string[] contents = File.ReadAllLines(fileName, Encoding.GetEncoding(encoding)); var transactionOptions = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = TimeSpan.FromSeconds(60 * 10) }; using (TransactionScope _transactionScope = new TransactionScope( TransactionScopeOption.Required, transactionOptions, TransactionScopeAsyncFlowOption.Enabled)) { aiService.Insert(contents); _transactionScope.Complete(); } } } }