我有一个Vb.Net函数向数据库提交详细信息,假设我想阻止多个用户在同一时间继续执行此功能。第二个人只有在第一个人退出该功能后才有机会执行该功能。Vb.net - 如何防止多个用户执行一个函数,然后再实际完成上次执行
0
A
回答
0
0
创建线程安全队列,所有用户将增加它们的参数和后台进程将由一个执行与给定的参数一个函数。这种方法你不会依赖于数据库的类型或版本。
可以使用ConcurrentQueue(Of T)实施
Public Class DetailsRepository
Private ReadOnly _queue As ConcurrentQueue(Of Object)
Private _cancellationSource As CancellationTokenSource
Private _cancellationToken As CancellationToken
Private _task As Task
Public Sub New()
_queue = New ConcurrentQueue(Of Object)()
End Sub
Public Sub Submit(arguments As Object)
queue.Enqueue(arguments);
End Sub
Public Sub Start()
_cancellationSource = new CancellationTokenSource()
_cancellationToken = _cancellationSource.Token
_task = Task.Run(AddressOf ExecuteSubmits, _cancellationToken)
End Sub
Public Sub Stop()
_cancellationSource.Cancel()
End Sub
Private Sub ExecuteSubmits()
While True
Dim argument As Object
If _queue.TryDequeue(argument) Then
' Execute database query with provided arguments
End If
If _cancellationToken.IsCancellationRequested Then
Exit While
End If
End
End Sub
End Class
在你的应用程序的入口点创建这个类的单一实例,并在您需要执行该功能
相关问题
- 1. 防止onScroll函数再次执行直到完成
- 2. 防止多次执行JavaScript函数
- 3. 如何防止javascript中的ajax函数一次执行多次
- 4. node.io:作业完成后,再次执行
- 5. 等待完成,然后再执行下一个任务
- 6. 执行exe文件一个完成,然后执行其他
- 7. 防止多次执行asynctask
- 8. 防止多次执行
- 9. 2个函数完成后在JQuery中执行一个函数
- 10. 等待两个异步完成函数完成,然后再执行下一行代码
- 11. 如何依次执行多个函数
- 12. 如何在另一个完成后执行javascript函数?
- 13. 一次执行后停止jquery函数
- 14. 如何在gdb中执行函数后执行一个函数?
- 15. Unity/C#:如何在另一个函数完成其执行后执行一个函数?
- 16. Swift函数在另一个函数完成后执行
- 17. 在另一个函数fadeOut()完成后执行函数
- 18. 上一个功能运行完成后执行一个功能
- 19. 防止用户执行两次动作
- 20. 上一个函数完成之前执行的Javascript函数
- 21. jquery ajax调用完成后执行一次函数
- 22. 如何调用一个函数childsnapshot完成执行
- 23. 第一次完成后执行方法
- 24. 每秒执行一次任务,完成后执行另一个任务
- 25. 等待事件完成后再执行另一个问题
- 26. 的Javascript无极(),然后以防止再呼叫第一次调用之前的函数执行
- 27. 如何在第一次执行后调用第二个函数?
- 28. 完成排防止AFJSONRequestOperation执行
- 29. 如何执行db.SaveChanges()然后再次更新数据库?
- 30. 如何让一个类不可点击直到它执行一个函数然后再次点击它?
数据库锁定是一个相当宽泛的主题使用它的每一个。你可能会发现灵感是像这样的文章(https://www.codeproject.com/Articles/114262/6-ways-of-doing-locking-in-NET-Pessimistic-and-opt)。 –
赔率是你不需要防止在第一次。什么原因你需要这个功能? –