1 Star 0 Fork 0

CN_ChangGeng/UniversalModule

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
TestRunTask.cs 2.39 KB
一键复制 编辑 原始数据 按行查看 历史
CN_ChangGeng 提交于 2025-03-18 17:04 +08:00 . 修改返回结果为固定反馈结果
using System;
using System.Threading.Tasks;
using TaskOperate;
namespace TaskOperateUnitTest
{
/// <summary>
/// 用于测试的具体任务实现类
/// </summary>
public class TestRunTask : RunTaskBase
{
private readonly int _delayTime;
private readonly bool _shouldSucceed;
private bool _isCancellationRequested;
public TestRunTask(int delayTime = 100, bool shouldSucceed = true)
{
_delayTime = delayTime;
_shouldSucceed = shouldSucceed;
SetTimeout(1000); // 设置默认超时时间为1秒
}
/// <summary>
/// 设置任务超时时间
/// </summary>
/// <param name="timeout">超时时间(毫秒)</param>
public void SetTimeout(int timeout)
{
TaskTimeout = timeout;
}
/// <summary>
/// 请求取消任务
/// </summary>
public void RequestCancel()
{
_isCancellationRequested = true;
}
public override async Task<TaskExecutionResult> StartTask(params object[] parameters)
{
InitCancelToken();
try
{
for (int i = 0; i < _delayTime / 100; i++)
{
if (_isCancellationRequested)
{
return TaskExecutionResult.Canceled("测试任务被取消");
}
await Task.Delay(100);
// 检查是否超时
if (i * 100 >= TaskTimeout)
{
return await HandleTimeoutAsync("测试任务", TaskTimeout);
}
}
if (!_shouldSucceed)
{
throw new Exception("测试任务执行失败");
}
return TaskExecutionResult.Success("测试任务执行成功");
}
catch (Exception ex)
{
return TaskExecutionResult.Failed("测试任务执行失败", ex);
}
}
protected override async Task<TaskExecutionResult> HandleTimeoutAsync(string taskName, int timeout)
{
return TaskExecutionResult.Timeout(
$"测试任务 {taskName} 执行超时 (超时设置: {timeout}ms)",
TimeSpan.FromMilliseconds(timeout));
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ChangGengCN/UniversalModule.git
git@gitee.com:ChangGengCN/UniversalModule.git
ChangGengCN
UniversalModule
UniversalModule
master

搜索帮助