process - Threading.Task.Run 提交两次但仅在某些调用上
问题描述
朋友:这个问题让我很困惑。
此代码两次提交相同的作业,除非我记录它!
' optionally log to a textfile before call
If bLog Then LogProcess("Before run")
' this only processes once regardless of
ExecuteSQL($"UPDATE [Process] SET [timesRepeated] += 1, [dateStarted] = '{Now}' WHERE [id] = {iID}")
Dim oBackground As New Background
' this thing spawns two of the some - but not all - jobs!
Dim t1 As Task = Task.Run(Sub() CallByName(oBackground, sProcessKey, CallType.Method, iID))
' optionally log to a textfile following call
If bLog Then LogProcess("After run")
这作为由内部计时器调用的后台处理例程的一部分发生。
我已经验证了计时器只产生一次,并且每次“heatbeat”只触发一次。
如果使用 bLog = True 调用此例程,我会执行单次执行。如果 bLog = False,某些进程 (sProcessKey) 会同时被调用两次。我也登录了这些例程。
有什么想法吗?
提前致谢。
解决方案
我希望这对其他人有帮助。这不是解决方案,只是一种解决方法:
由于稍微延迟处理(在这种情况下通过日志记录)起作用,我添加了一个贪睡因素,因此:
If bLog Then
LogProcess("After run")
Else
Thread.Sleep(1000)
End If
这解决了这个问题,但很明显,处理延迟了 1 秒。
推荐阅读
- javascript - 在 try/catch 块中成功异步请求后执行语句
- c++ - 交错插入排序功能无法正确排序
- android - Expo with Android Studio Emulator 错误:“Error running adb: This computer is not authorized to debug the device”
- php - 文件夹中的 HTML 图像不再出现 (PHP)
- python - 如果日期是周末 - 自动重新运行该功能
- c++ - 什么方法可以创建一个 16 字节的校验和
- oracle - 将数学公式转换为 Oracle 函数
- php - 请帮助解析json
- python - 无条件替换 Pandas 列中的所有值
- assembly - 基础和位移之间的差异