Как использовать взаимное исключение в Visual Basic

Большинство ответов связаны с изменением вызова на json.dumps (), что не всегда возможно или желательно (это может произойти, например, в компоненте framework).

Если вы хотите быть в состоянии для вызова json.dumps (obj) как есть, тогда простое решение наследуется от dict:

class FileItem(dict):
    def __init__(self, fname):
        dict.__init__(self, fname=fname)

f = FileItem('tasks.txt')
json.dumps(f)  #No need to change anything here

Это работает, если ваш класс является просто базовым представлением данных, потому что для более сложных вещей вы всегда можете задавать ключи явно .

21
задан CoderCroc 13 December 2017 в 09:15
поделиться

3 ответа

Код VB выглядит примерно так:

hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)

первый параметр является указателем на SECURITY_ATTRIBUTES структура. Если Вы не знаете, каково это, Вам не нужен он. Передайте ПУСТОЙ УКАЗАТЕЛЬ (0).

второй параметр TRUE (ненулевой, или 1), если вызывающий поток должен взять владение взаимного исключения. FALSE иначе.

третий параметр является взаимоисключающим именем и может быть ПУСТОЙ (0), как показано. Если Вы нуждаетесь в именованном взаимном исключении, передаете имя (что-либо уникальное) в. Не уверенный, упорядочивает ли VB обертка снабженный префиксом длину VB строковый тип (BSTR) к завершенной пустым указателем строке Ascii/Unicode в противном случае, необходимо будет сделать, это и многочисленные примеры там.

Удачи!

7
ответ дан 29 November 2019 в 22:00
поделиться

Вот объявления VB6 для CreateMutex - я просто скопировал их со средства просмотра API, которое Вы должны иметь как часть Вашей установки VB6. VB6 marshalls представляет в виде строки к завершенному пустым указателем ANSI с помощью текущей кодовой страницы.

Public Type SECURITY_ATTRIBUTES
   nLength As Long
   lpSecurityDescriptor As Long
   bInheritHandle As Long 
End Type

Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" _
   (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, _
    ByVal lpName As String) As Long

Принимают во внимание, что при создании взаимного исключения из VB6 IDE взаимное исключение принадлежит IDE и не будет уничтожено, когда Вы прекращаете запускать свою программу - только при закрытии IDE.

9
ответ дан 29 November 2019 в 22:00
поделиться

Ну, на основе документация это похоже:

  1. Атрибуты безопасности (может передать пустой указатель)
  2. , Владел ли он первоначально (может передать ложь)
  3. название его

HTH

1
ответ дан 29 November 2019 в 22:00
поделиться