gpt4 book ai didi

vb.net - 如何强制模块初始化(VB Windows 应用商店应用程序)?

转载 作者:行者123 更新时间:2023-12-02 04:32:10 24 4
gpt4 key购买 nike

(Windows 应用商店应用程序,使用 VB/XAML)

我目前正在通过 App.Current 从 App.Xaml.vb 在游戏中播放音效(以播放其他页面的声音),效果很好。但是,为了使我的代码更简洁,我想到将所有音效移动到一个模块中,仍然可以从应用程序中的任何位置访问它们。

似乎模块仅在第一次需要时才加载到内存中(这是正确的)吗?这意味着我第一次尝试播放声音效果时它是静音的(因为模块没有时间加载它需要的内容)。

我可以在应用程序启动时将模块强制放入内存中,以便我的所有应用程序页面都可以访问它吗?目前,当我的应用程序启动时,我会加载所有声音(只有大约六个),但在离散模块中执行会“更整洁”。

我尝试添加“Imports MyNamespace.AudioModule”,但这不会使模块在第一次访问/使用之前加载。

我可以让它工作,感觉像是一个丑陋的、不必要的黑客:如果我在应用程序首次启动时播放声音(从模块),模块初始化(所有声音都加载在构造函数中),并且发出声音在那之后工作(第一个声音是无声的,因为模块尚未加载)。

我在这里缺少一个明显的、基本的答案吗?

最佳答案

对于 VB 模块或 C# 静态类,首次调用方法或函数时将运行构造函数并填充值。强制执行此操作的一种方法是调用虚拟方法。

Microsoft Exchange 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

关于vb.net - 如何强制模块初始化(VB Windows 应用商店应用程序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com