2016-06-06 2 views
0

У меня есть следующий класс, указанный ниже. Хотелось бы, чтобы он подвел событие, когда он закончил вычислять. Однако VS-2015 говорит мне: «Вы не можете ссылаться на экземпляр-член класса без явного экземпляра методов классов».RaiseEvent не разрешен

Может ли кто-нибудь сказать мне, что здесь не так, и как я могу решить эту проблему? Я думаю, что каждый класс может поднять событие.

Спасибо!

Imports System.Text 
Imports System.IO 
Imports Microsoft.Win32 
Imports NAudio.Wave 

Namespace VoiceRecorder.Audio 

    Public Class AudioSaver 

     Public Event Finished() 

     Private _sInputPath As String 

     Public Property _tsTrimFromStart As TimeSpan 
     Public Property _tsTrimFromEnd As TimeSpan 
     ' Public Property _sffSaveFileFormat As SaveFileFormat 
     Public Property _sLameExePath As String 

     Public Sub New(ByVal uInputPath As String) 
      Me._sInputPath = uInputPath 
     End Sub 

     Public ReadOnly Property IsTrimNeeded As Boolean 
      Get 
       Return _tsTrimFromStart <> TimeSpan.Zero OrElse _tsTrimFromEnd <> TimeSpan.Zero 
      End Get 
     End Property 

     Public Sub SaveAudio(ByVal uOutputPath As String) 

      Dim sTempFiles As New List(Of String) 
      Dim sPathToProcess = _sInputPath 
      If IsTrimNeeded() Then 
       Dim sTempFile As String = WavFileUtils.GetTempWavFileName() 
       sTempFiles.Add(sTempFile) 
       WavFileUtils.TrimWavFile(_sInputPath, sTempFile, _tsTrimFromStart, _tsTrimFromEnd) 
       sPathToProcess = sTempFile 
      End If 

      ' If _sffSaveFileFormat = SaveFileFormat.Mp3 Then 
      ConvertToMp3(Me._sLameExePath, sPathToProcess, uOutputPath) 
       'Else 
       ' File.Copy(sPathToProcess, uOutputPath, True) 
       'End If 
       DeleteTempFiles(sTempFiles) 
     End Sub 

     Private Sub DeleteTempFiles(ByVal tempFiles As IEnumerable(Of String)) 
      For Each tempFile In tempFiles 
       If File.Exists(tempFile) Then 
        File.Delete(tempFile) 
       End If 
      Next tempFile 
     End Sub 

     Public Shared Sub ConvertToMp3(ByVal lameExePath As String, ByVal waveFile As String, ByVal mp3File As String) 

      Dim nConverter = Process.Start(lameExePath, "-V2 """ & waveFile & """ """ & mp3File & """") 
      nConverter.WaitForExit() 

      RaiseEvent Finished() 

     End Sub 
    End Class 
End Namespace 

ответ

0

Got it. Мне пришлось удалить атрибут «Общий», но я до сих пор не знаю, почему это так.