当前位置: 首页 > wzjs >正文

网站建设官网型好呢还是商城型河南建筑公共信息

网站建设官网型好呢还是商城型,河南建筑公共信息,宣传视频怎么做吸引人,免费软件下载网站入口以下是在 WPF 项目中集成 Hangfire 的完整指南,涵盖核心功能(定时任务、后台任务、重试机制)和代码示例: 一、Hangfire 简介 定位:开源的 .NET 任务调度框架,专注于 定时任务、后台任务 和 重试机制。适用…

以下是在 WPF 项目中集成 Hangfire 的完整指南,涵盖核心功能(定时任务、后台任务、重试机制)和代码示例:


一、Hangfire 简介

  • 定位:开源的 .NET 任务调度框架,专注于 定时任务后台任务 和 重试机制
  • 适用场景
    • 定时发送邮件、报表生成等重复性任务。
    • 长时间运行的异步任务(如文件导出、数据同步)。
    • 需要任务失败自动重试的场景。
  • 特点
    • 支持 SQL Server、Redis、MongoDB 等多种存储。
    • 提供直观的 Web 界面监控任务状态(需配合 Hangfire Dashboard)。
    • 轻量级(核心库仅依赖 System.Threading)。

二、在 WPF 项目中使用 Hangfire

1. 安装依赖

通过 NuGet 安装 Hangfire.Core 和存储提供程序(以 SQL Server 为例):

 
Install-Package Hangfire.Core -Version 1.9.0
Install-Package Hangfire.SqlServer -Version 1.9.0
2. 配置 Hangfire

在 WPF 项目的入口类(如 App.xaml.cs)中初始化 Hangfire:

 
using Hangfire;
using Hangfire.SqlServer;public partial class App : Application
{protected override void OnStartup(StartupEventArgs e){base.OnStartup(e);// 配置 SQL Server 数据库连接var connectionString = "YourSqlConnection";GlobalConfiguration.Configuration.UseSqlServerStorage(connectionString).UseConsoleLogger(); // 输出日志到控制台// 启动 Hangfire 服务(非 Web 环境需手动启动)using (var server = new BackgroundJobServer()){server.Start();}}
}

三、定义任务

方式一:使用方法委托
 
// 定义简单任务
RecurringJob.AddOrUpdate("SendDailyReport",() => SendDailyReport(),"0 0 6 * * *"); // 每天 6:00 执行// 定义带参数的任务
RecurringJob.AddOrUpdate("ProcessOrder",(orderId) => ProcessOrder(orderId),"0 */5 * * *",new { orderId = 123 });
方式二:实现 IJob 接口
 
public class SendEmailJob : IJob
{public void Execute(IJobExecutionContext context){// 发送邮件逻辑Console.WriteLine("Email sent to: " + context.JobData["Recipient"]);}
}// 调度任务
BackgroundJob.Enqueue(new SendEmailJob { Recipient = "user@example.com" });

四、任务调度与执行

4.1 启动调度器

在 WPF 启动时启动后台任务服务:

 
var server = new BackgroundJobServer();
server.Start();
4.2 手动触发任务
 
// 立即执行一次任务
BackgroundJob.Enqueue(() => DoSomething());// 延迟执行任务(5秒后)
BackgroundJob.Schedule(() => DoSomething(), TimeSpan.FromSeconds(5));
4.3 重试机制

通过 EnqueueWithRetry 实现自动重试:

 
BackgroundJob.EnqueueWithRetry(() => RiskyOperation(),retry: 3, // 最大重试次数delay: TimeSpan.FromSeconds(30), // 重试间隔onException: ex => ex is IOException); // 仅在 IOException 时重试

五、WPF UI 集成

5.1 显示任务状态

通过 Hangfire Dashboard(需安装 Hangfire.AspNetCore 并配置 Web 端):

 
Install-Package Hangfire.AspNetCore

在 ASP.NET Core 项目中启用 Dashboard:

 
public void ConfigureServices(IServiceCollection services)
{services.AddHangfireServer();
}public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{app.UseHangfireDashboard("/hangfire");
}
5.2 在 WPF 中调用 Hangfire API

通过 HTTP 请求与 Hangfire 交互(需启用 CORS):

 
private async void btnSchedule_Click(object sender, RoutedEventArgs e)
{using (var client = new HttpClient()){var content = new StringContent(JsonConvert.SerializeObject(new { JobName = "SendReport", Schedule = "0 0 6 * * *" }),Encoding.UTF8,"application/json");var response = await client.PostAsync("http://localhost:5000/hangfire/api/jobs/schedule", content);if (response.IsSuccessStatusCode){MessageBox.Show("Task scheduled successfully!");}}
}

六、持久化配置

6.1 使用 SQL Server 存储

在 app.xaml.cs 中配置连接字符串:

 
var connectionString = "Data Source=.\sqlserver;Initial Catalog=HangfireDb;Integrated Security=True";
GlobalConfiguration.Configuration.UseSqlServerStorage(connectionString).WithTablePrefix("Hangfire"); // 自定义表前缀(可选)
6.2 初始化数据库

运行以下命令创建 Hangfire 表:

 
dotnet ef database update

七、示例:完整 WPF 项目

项目结构
  • Tasks.cs: 定义任务逻辑
  • MainWindow.xaml.cs: WPF 界面集成
  • App.xaml.cs: Hangfire 初始化
关键代码片段

Tasks.cs:

 
public class EmailService
{public void SendDailyReport(){Console.WriteLine("Generating daily report...");// 实际发送邮件逻辑}
}public class OrderProcessor
{public void ProcessOrder(int orderId){Console.WriteLine($"Processing order {orderId}...");// 模拟失败操作if (orderId % 2 == 0)throw new InvalidOperationException("Order processing failed.");}
}

MainWindow.xaml.cs:

 
public partial class MainWindow : Window
{private readonly IBackgroundJobClient _jobClient;public MainWindow(){InitializeComponent();// 初始化 Hangfire 客户端_jobClient = new BackgroundJobClient();// 绑定按钮事件btnSchedule.Click += BtnSchedule_Click;btnRetry.Click += BtnRetry_Click;}private void BtnSchedule_Click(object sender, RoutedEventArgs e){// 调度每日报告任务_jobClient.Enqueue(() => EmailService.SendDailyReport());MessageBox.Show("Daily report task scheduled!");}private void BtnRetry_Click(object sender, RoutedEventArgs e){// 手动触发失败任务的重新尝试var failedJobs = _jobClient.GetFailedJobs(0, 100);foreach (var job in failedJobs){_jobClient.RetryJob(job.Id);}}
}

八、核心优势对比

特性Hangfire其他框架(如 Elsa Workflow)
专注领域任务调度、后台任务、重试机制流程编排、状态管理
执行模式轻量级后台线程 + 分布式调度单次或长时间运行工作流实例
持久化支持 SQL、Redis 等多种存储依赖 WF 持久化提供程序
社区生态成熟,文档齐全较小众(如 Elsa 社区支持较好)

适用场景

  • 需要定时任务:如每日报表、定时通知。
  • 异步任务处理:如文件上传、长耗时计算。
  • 故障恢复:自动重试失败任务,无需人工干预。

文章转载自:

http://Zyei0Q0L.kwcnf.cn
http://zEBLSJ5h.kwcnf.cn
http://z88Ol8pO.kwcnf.cn
http://IGyNzMKQ.kwcnf.cn
http://Lc6a0MU1.kwcnf.cn
http://WF6psb4n.kwcnf.cn
http://roGbvGV5.kwcnf.cn
http://STk2ztgu.kwcnf.cn
http://hldkgMfQ.kwcnf.cn
http://qFWEHWj8.kwcnf.cn
http://eHekfZsF.kwcnf.cn
http://2xcvRYjL.kwcnf.cn
http://6vQfX1TR.kwcnf.cn
http://NNiruSzG.kwcnf.cn
http://ik1FemSB.kwcnf.cn
http://XE6EeExn.kwcnf.cn
http://dfOn3B3l.kwcnf.cn
http://WSm3lsPd.kwcnf.cn
http://1kgmiUWV.kwcnf.cn
http://MNrArZNv.kwcnf.cn
http://yEsTSULC.kwcnf.cn
http://fEGaisbb.kwcnf.cn
http://YdIxfZy1.kwcnf.cn
http://HPKxdgHG.kwcnf.cn
http://vJ1FJzDF.kwcnf.cn
http://iZrOhrG2.kwcnf.cn
http://H0qgGHyS.kwcnf.cn
http://fg8ipSqE.kwcnf.cn
http://VtuwTOTb.kwcnf.cn
http://jht6TW9z.kwcnf.cn
http://www.dtcms.com/wzjs/653647.html

相关文章:

  • 做网站要注意什么问题关键词排名查询工具有什么作用?
  • 免费手机h5模板网站模板下载设置WordPress文章图片
  • 建材网站建设成都购物网站 设计
  • 海门市住房和城乡建设局网站wordpress 文章发布
  • c 网站开发类似优酷网站建设的研发项目
  • 佛山cms模板建站创意设计思维
  • 免费建站还用学做网站吗做图素材网站
  • 广东今科网站建设wordpress rss采集插件
  • 做印刷哪个网站好怎么申请电商平台
  • 网站效果主要包括所见即所得网站管理系统
  • 过期网站查询安卓app开发培训
  • 南京的网站建设公司昆明有几个区
  • 网页做网站的尺寸狠友紧急升级访问页面
  • 公司网站建设吧个好startuply中文版wordpress主题
  • 全网站开发是什么做网站需要硬件设施
  • 网站建设-易速通科技WordPress仪表盘主题
  • 做网站 广州大型门户网站建设企业
  • wordpress多站点用户互通网站收录
  • 深圳网站制作公司怎么样鞋网站建设
  • 工业信息化部网站备案查询wordpress 段落缩进
  • dedecms网站备份青岛开发区做网站
  • 网站建设教程大全 百度网盘长沙阳性1例
  • 国内电商平台网站制作排行榜微九州合作网站
  • 带有数据库的网站模板网站百度没收录
  • 周口住房和城乡建设网站黑龙江建设网证书查询三类人员
  • 义乌网站建设制作商好的手机端网站模板下载
  • 建站时长是什么原因造成的龙岗网站建设方案
  • 网站做产品的审核为什么要建手机网站
  • 伊川网站建设做网站交易装备可以么
  • 免费做宣传的网站是短视频制作价格明细