代码如下所示:
里面注释的地方需要加一段消息处理程序,把屏幕刷新再发声,如何写?
labelnotice.Text="门票无效!";
panel1.BackColor = Color.Yellow;
strlastticketcode="";//希望在这里立刻把图片颜色改变过来,然后再发声。
//但是结果都要等声音发完了之后才能显示图片为黄色
try 
{
this.MyAudioController.PlayWaveFile("done.wav"); }
catch
{
MessageBox.Show("PlayWaveFile failed. Wave file or speaker may not be present.", "PlayWaveFile");
}

解决方案 »

  1.   

    用threading.thread.sleep延时一下试试
      

  2.   


    panel1.BackColor = Color.Yellow;
    后加上
    panel1.Refresh();
      

  3.   

    Knight94(愚翁) ( ) 信誉:110 不可用copico(一路向北) ( ) 信誉:100 不懂你说的意思,不知道具体扎个往里面添代码,我初学C#,麻烦仔细说下
      

  4.   

    labelnotice.Text="门票无效!";
    panel1.BackColor = Color.Yellow;
    strlastticketcode="";//加入
    Application.DoEvents();
      

  5.   

    to 不可用winform or webform?如果是winform,应该没什么问题,
    或者把
    panel1.Refresh();
    改为
    MethodInvoker mi = new MethodInvoker( panel1.Refresh );
    panel1.Invoke( mi );
      

  6.   

    Knight94(愚翁) ( ) 信誉:110 
    是pocket PC的程序
      

  7.   

    1. 开个线程放声音。可能对性能有点影响,处理起来简单。2.如Knight94(愚翁) ( ) 
    调Control.Invoke方法。
    不过在ppc没有MethodInvoker 这个委托,要自己构造一个。
      

  8.   

    不好意思,我试了下,Control.Invoke调的时候,还是同步的,
    show个box,线程会被hold住,所以这个方法应该是不行的。开个线程没有问题。
      

  9.   

    Aallonlin(风之力) ( ) 信誉:100  开个线程好复杂哦。我试下。
      

  10.   

    如果是pocket PC的程序不支持Invoke方法,那么用线程也无法实现你想要的,因为在子线程中一般不能直接操纵主线程产生的控件。
      

  11.   

    To :Knight94
    1.  pocket PC的程序不支持Invoke方法, 是支持的, 只是没有MethodInvoker 这个委托,要自己构造一个
    2. 子线程中一般不能直接操纵主线程产生的控件, 调control.Invoke就可以操作了,而且在线程里调Invoke的,即使show一个dialog都不会被Hold住.3. 就楼主的这个问题, 可以把播放声音的放在一个线程运行,没那么复杂.没用必要用Invoke方法.
      

  12.   

    labelnotice.Text="门票无效!";
    panel1.BackColor = Color.Yellow;
    strlastticketcode="";

                   timer1.Enabled = true;
    private void timer1_Tick(object sender, System.EventArgs e)
    {
    try 
    {
    this.MyAudioController.PlayWaveFile("done.wav"); }
    catch
    {
    MessageBox.Show("PlayWaveFile failed. Wave file or speaker may not be present.", "PlayWaveFile");
    } timer1.Enabled = false;
    }