热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#程序运行出现未响应

做的一个小的MP3播放器,用usingSystem.Windows.Forms.Timer这个来计时,获取当前歌曲播放的位置(播放时间),并显示到窗体上.当我运行程序,点击一首歌曲开始播放时,程序
做的一个小的MP3播放器,用using System.Windows.Forms.Timer这个来计时,获取当前歌曲播放的位置(播放时间),并显示到窗体上.当我运行程序,点击一首歌曲开始播放时, 程序就出现未响应。求解。
下面是一部分代码:

class DoMusic
{
    [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
        public static extern int mciSendString(
            string lpstrCommand,
            string lpstrReturnString,
            int uReturnLength,
            int hwndCallback
            );
      [DllImport("Kernel32", CharSet = CharSet.Auto)]
        static extern Int32 GetShortPathName(String path, StringBuilder shortPath, Int32 shortPathLength);

        /// 
        /// 获取当前播放的位置
        /// 

        /// 当前时间值(毫秒)
        public string GetCurrentTime()
        {
            string st="";
            mciSendString(@"status song position", st, 100, 0);
            return st;
        }

        public void Play(string path)
       {
             StringBuilder shortpath = new StringBuilder(80);
             int result = GetShortPathName(path, shortpath, shortpath.Capacity);
             path = shortpath.ToString();
             mciSendString(@"close all", null, 0, 0);
             mciSendString(@"open " + path + " alias song", null, 0, 0); //打开
             mciSendString(@"play song", null, 0, 0); //播放
        }
}
 public partial class MyMusic : Form
{
        public MyMusic()
        {
            InitializeComponent();
            //Control.CheckForIllegalCrossThreadCalls = false;
        }

      //播放
       private void btnPlay_Click(object sender, EventArgs e)
        {
            string path = @"F:\Music\123.mp3";
            DoMusic dm = new DoMusic();
            Play(path);
            progressTimer.Start();
        }

        //Timer事件
        private void progressTimer_Tick(object sender, EventArgs e)
        {
            DoMusic dm = new DoMusic();
            string currentTime = dm.GetCurrentTime();
            label1.text=currentTime;
        }
}

16 个解决方案

#1


自己先顶一下

#2


            string path = @"F:\Music\123.mp3";
            DoMusic dm = new DoMusic();
             dm.Play(path);            progressTimer.Start();


直接可以掉play()吗??

#3


不好意思,这是我贴的时候写错了,原来代码不是这样

#4


不好意思,我贴的时候写错了,源代码不是这样。
引用 2 楼 joop_song 的回复:
string path = @"F:\Music\123.mp3";
  DoMusic dm = new DoMusic();
  dm.Play(path); progressTimer.Start();


直接可以掉play()吗??

#5


该回复于2011-05-10 13:23:33被版主删除

#6


那源代码是??
引用 4 楼 niujingliang 的回复:
不好意思,我贴的时候写错了,源代码不是这样。引用 2 楼 joop_song 的回复:
string path = @"F:\Music\123.mp3";
DoMusic dm = new DoMusic();
dm.Play(path); progressTimer.Start();


直接可以掉play()吗??

#7


引用 6 楼 cjh200102 的回复:
那源代码是??

引用 4 楼 niujingliang 的回复:

不好意思,我贴的时候写错了,源代码不是这样。引用 2 楼 joop_song 的回复:
string path = @"F:\Music\123.mp3";
DoMusic dm = new DoMusic();
dm.Play(path); progressTimer.Start();


直接可以掉pla……

我贴的时候写错了,我程序里是dm.Play(path);

#8


 private void btnPlay_Click(object sender, EventArgs e)
        {
            string path = @"F:\Music\123.mp3";
            DoMusic dm = new DoMusic();
            Play(path);
            progressTimer.Start();
        }

在private void btnPlay_Click(object sender, EventArgs e)
这个地方放个断点进去看看,就可知道了啊

#9


该回复于2011-05-11 01:43:19被版主删除

#10


还是没有解决,自己再顶一下

#11


播放歌曲可能比较占资源,试一下将计时的方法另开条线程处理

#12


导出函数封装错误!
 [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
        public static extern int mciSendString(
            string lpstrCommand,
            string lpstrReturnString,
            int uReturnLength,
            int hwndCallback
            );
[DllImport("Kernel32", CharSet = CharSet.Auto)]
        static extern Int32 GetShortPathName(String path, StringBuilder shortPath, Int32 shortPathLength);

#13


CharSet = CharSet.Auto修改为CharSet.Ansi

#14


建议你也封装好 mciGetErrorString 函数,从此获得mci的错误信息

#15


引用 12 楼 zhu_jiang 的回复:
导出函数封装错误!
 [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
  public static extern int mciSendString(
  string lpstrCommand,
  string lpstrReturnString,
  int uRetur……
我试着改了一下还是不行

#16


有愿意帮忙留下邮箱地址,我发给他,给我看看

推荐阅读
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
author-avatar
浪子一品香_938
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有