音乐文件.kgm格式转.mp3格式WPF解决方案
话不多说-先看效果
Github链接
Gitee链接
鼠标拖动文件夹到灰色文本框即可取得文件路径,点击按钮也可以获得路径,获得的路径实时显示在灰色文本框。
批量格式转换过程中能够实时显示成功转换多少、转换失败多少(99.9%都能转换成功,测试过几百个仅2个文件无法转码),以及转换完成的进度。
制作背景
缘起前几天为了给妹妹的MP3下载周董的150首歌,为了妹妹不用手机耽误学习,狠心花了3块9开了会员,结果开完会员后发现下载的文件离开👖🐕后就不能播放,找遍全网无果不是要收费就是根本没法用,最后终于在GitHub上发现了一个东东,真的很Nice,有个Go编译的双击就可以运行,但必须将两个文件放在kgm文件同一级目录,不太喜欢。然后加上可能我被Windows洗脑了,一看到有个带命令启动的版本,视觉本能驱使我又套了个壳,套完壳后觉得手感还是可以😂
关键技术
UI控件属性与后台数据绑定
利用 wpf 支持数据驱动,可以提高响应速度。如果采用时间驱动,由于wpf前后台是分离的 UI 和 后台运行在不同线程,线程不同步虽然可以用invoke一下,但这样效率低啊,遇到需要传值的时候(基本都是这样的),就像用async里的await一样,势必会阻塞await后面的执行和因为。使用数据驱动的话就不用管这些事情了,把这些事交给编译器自己弄去吧,这样就实现了实时更新数据。
#region 属性的绑定
/// <summary>
/// 定义记录进度的字段及属性
/// </summary>
private string currentProgress = "";
public string CurrentProgress
{
get {
return currentProgress; }
set
{
currentProgress = value;
OnPropertyChanged("CurrentProgress");
}
}
private string successFail = "";
public string SuccessFail
{
get {
return successFail; }
set
{
successFail = value;
OnPropertyChanged("SuccessFail");
}
}
/// <summary>
/// 属性改变的事件委托
/// 实现INotifyPropertyChanged接口成员
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string PropertyName)