サーバーでいくつかの .wav ファイルを再生するために C# を使用して Web ユーザー コントロールを作成しています。以下は私のコードです。
public partial class WaveFilePlayer : System.Web.UI.UserControl
{
//private string[] files;
private static string[] files;
protected void ButtonLoad_Click(object sender, EventArgs e)
{
string resourcePath = ConfigurationManager.AppSettings["ResourcePath"];
string searchPattern = ConfigurationManager.AppSettings["SearchPattern"];
files = System.IO.Directory.GetFiles(path, searchPattern);
}
protected void ButtonPlay_Click(object sender, EventArgs e)
{
int selectedIndex = ListBoxFiles.SelectedIndex;
SoundPlayer soundPlayer = new SoundPlayer(files[selectedIndex]);
soundPlayer.Play();
}
上記のコードに見られるようにstring[] files
、メンバー変数として宣言します。ButtonLoad_Click
次に、メソッドに割り当てます。しかし、静的と宣言されていない限り、メソッドNullReferenceException
でアクセスしようとするとスローされます。ButtonPlay_Click
string[] files
System.Web.UI.UserControl
asp.net ページでユーザー コントロールを読み込んでいるときに、新しいオブジェクトが作成されないということですか? また、複数のクライアント (ブラウザ) が .wav ファイルを再生しようとすると、サーバーで .wav ファイルのインスタンスが 1 つだけstring[] files
作成され、すべてのクライアントで使用されるということですか?