2014-01-23 1 views
3

(윈도우 스토어 앱은 VB/XAML 사용) 나는 현재 App.Current를 통해 App.Xaml.vb에서 내 게임에서 사운드 효과를 재생하고모듈을 강제로 초기화 할 수 있습니까 (VB Windows Store 앱)?

을 (다른 페이지에서 소리를 재생), 그리고 그것을 잘 작동합니다. 그러나 내 코드를 깔끔하게 만들기 위해 모든 사운드 효과를 모듈로 이동하여 앱의 어느 곳에서나 액세스 할 수있는 아이디어를 얻었습니다.

모듈이 처음 필요할 때만 메모리에로드되는 것 같습니다 (정확합니까?). 즉, 사운드 효과를 처음 시도 할 때 사운드가 들리지 않는다는 의미입니다. 모듈에 필요한 부분을로드 할 시간이 없었기 때문입니다.

앱 실행시 모듈을 메모리에 강제로 저장하여 모든 내 앱 페이지에 액세스 할 수 있습니까? 내 앱이 어쨌든 시작될 때 나는 현재 모든 사운드를로드한다. (약 반 정도 다), 디스크리트 모듈로 처리하면 '깔끔하다'.

'Imports MyNamespace.AudioModule'을 추가하려고했지만 모듈을 처음 액세스/사용하기 전에로드하지 않습니다.

추악하고 불필요한 해킹과 같은 느낌으로 작동하도록 할 수 있습니다. 앱이 처음 시작될 때 사운드를 재생하면 모듈이 초기화되고 모든 사운드가 생성자에로드됩니다. 사운드는 그 지점 이후에 작동합니다 (이 첫 번째 사운드는 모듈이 아직로드되지 않았기 때문에 소리가 나지 않습니다).

여기에 분명한 기본 대답이 있습니까?

답변

3

VB Module 또는 C# Static 클래스의 경우 생성자가 처음 실행될 때 메서드 또는 함수가 처음 호출 될 때 값이 채워집니다. 이를 강제하는 한 가지 방법은 더미 메서드를 호출하는 것입니다. 마이크로 소프트 교환에서

예 2013 101 코드 샘플 :

// C# 
CertificateCallback.Initialize(); // Instantiate static class 

public static class CertificateCallback { 
    static CertificateCallback() { // Static constructor 
     ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack; 
    } 

public static void Initialize() { // Dummy method to force initialization 
} 
... 
} 

'VB.NET 
CertificateCallback.Initialize() // Instantiate static class 

Public Module CertificateCallback 
    Sub New() ' Static constructor 
     ServicePointManager.ServerCertificateValidationCallback = AddressOf CertificateValidationCallBack 
    End Sub 

Public Sub Initialize() // Dummy method to force initialization 
End Sub 
... 
End Module 
관련 문제