В соответствии с вашим предупреждением и сообщением о сбое вы обращаетесь к пользовательскому интерфейсу в фоновом потоке.
Убедитесь, что ваш код пользовательского интерфейса вызывается в основном потоке.
В случае фоновых потоков вы можете исправить это следующим образом:
DispatchQueue.main.async {
/// your code here
}
В вашем коде я вижу, что вы устанавливаете себя в качестве делегата потока изображений в фоновой очереди. Это означает, что ваш переход также называется фоном. Исправьте это:
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection){
captureSession.stopRunning()
if let metadataObject = metadataObjects.first {
guard let readableObject = metadataObject as? AVMetadataMachineReadableCodeObject else { return }
guard let stringValue = readableObject.stringValue else { return }
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
found(code: stringValue)
}
DispatchQueue.main.async {
self.performSegue(withIdentifier: "toTimerView", sender: self)
}
}
Проблема здесь:
Dim FirstLevel, FirstDACtoMeasure As Integer
Это на самом деле объявляет FirstLevel
как a Variant
и не как Integer
поскольку Вы могли бы ожидать.
Это - классический глюк VB6! (и Вы не являетесь первыми, чтобы быть укушенными им).
Объявление переменной на строку избегает проблемы:
Dim FirstLevel As Integer
Dim FirstDACtoMeasure As Integer
Джон Т. Вы можете явно объявить переменные в списке.
Dim FirstLevel как Integer, FirstDACtoMeasure как Integer
Как Mitch указал, VB6 только объявляет, что последняя переменная в запятой разграничила список как явно определенного типа. Предыдущие записи объявляются, но как варианты.
Чтобы объявить переменные правильно, необходимо обработать их индивидуально.
Dim FirstLevel As Integer
Dim FirstDACtoMeasure As Integer
Это также имело место в предыдущих версиях VB, IIRC, не нового для для VB6.