我最近在用c#写一个windows mobile 6上的程序。我想用opennetcf实现一个录音和播放的功能。现在的问题是录音完全没问题,但是播放到5秒以后声音还后,但是画面就卡住了。但是我希望在屏幕上作一个简单的计时显示,现在的情况是每次只能计时到5秒,然后就一直卡着,一直到播放结束才恢复。下面是我的代码。public partial class voicePlayer : Form
{
public voicePlayer()
{
InitializeComponent();
player = new Player();
player.DonePlaying += new WaveDoneHandler(player_DonePlaying);
timer = new Timer();
timer.Interval = 1000;
timer.Enabled = false;
timer.Tick += new EventHandler(refreshTime);
} private Timer timer;
private Player player;
private Stream stream;
private DateTime startTime;
private bool pause = false;
private int timeCount; private void voicePlayer_Activated(object sender, EventArgs e)
{
play.Enabled = true;
stop.Enabled = false;
pause = false;
play.Text = "Play";
} void refreshTime(object sender, EventArgs e)
{
timeCount++;
time.Text = string.Format("{0:00:00:00}", timeCount);
if (!player.Playing && !pause)
{
timeCount = 0;
pause = false;
timer.Enabled = false;
play.Text = "Play";
stop.Enabled = false;
time.Text = "00:00:00";
}
} private void play_Click(object sender, EventArgs e)
{
if (!pause && play.Text == "Play")
{
play.Text = "Pause";
stop.Enabled = true; timer.Enabled = true;
stream = File.OpenRead(Form1.note);
player.Play(stream);
startTime = DateTime.Now;
}
else if (!pause && play.Text == "Pause")
{
player.Pause();
play.Text = "Play";
pause = true;
timer.Enabled = false;
}
else
{
pause = false;
play.Text = "Pause";
player.Restart();
timer.Enabled = true;
}
} void player_DonePlaying(object sender, IntPtr wParam, IntPtr lParam)
{ } private void stop_Click(object sender, EventArgs e)
{
player.Stop();
pause = false;
}
}
{
public voicePlayer()
{
InitializeComponent();
player = new Player();
player.DonePlaying += new WaveDoneHandler(player_DonePlaying);
timer = new Timer();
timer.Interval = 1000;
timer.Enabled = false;
timer.Tick += new EventHandler(refreshTime);
} private Timer timer;
private Player player;
private Stream stream;
private DateTime startTime;
private bool pause = false;
private int timeCount; private void voicePlayer_Activated(object sender, EventArgs e)
{
play.Enabled = true;
stop.Enabled = false;
pause = false;
play.Text = "Play";
} void refreshTime(object sender, EventArgs e)
{
timeCount++;
time.Text = string.Format("{0:00:00:00}", timeCount);
if (!player.Playing && !pause)
{
timeCount = 0;
pause = false;
timer.Enabled = false;
play.Text = "Play";
stop.Enabled = false;
time.Text = "00:00:00";
}
} private void play_Click(object sender, EventArgs e)
{
if (!pause && play.Text == "Play")
{
play.Text = "Pause";
stop.Enabled = true; timer.Enabled = true;
stream = File.OpenRead(Form1.note);
player.Play(stream);
startTime = DateTime.Now;
}
else if (!pause && play.Text == "Pause")
{
player.Pause();
play.Text = "Play";
pause = true;
timer.Enabled = false;
}
else
{
pause = false;
play.Text = "Pause";
player.Restart();
timer.Enabled = true;
}
} void player_DonePlaying(object sender, IntPtr wParam, IntPtr lParam)
{ } private void stop_Click(object sender, EventArgs e)
{
player.Stop();
pause = false;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货