C#混编调用Matlab时出图很慢,老板让加一个进度条

chentin20009 2010-04-09 10:29:52
各位大侠,各位大师级别GG,MM。有谁有实例的发给我一个好吗?
我有一个项目是C# Button 混编调用Matlab,但是调用时很慢,好像死机了一样。
老板让加一个进度条显示读取这个过程。谁能教教我。谢谢大家了。
我的邮箱是leiyuan14@163.com
谢谢大家关注,谢谢了。第一次发帖,有不周到的地方大家多多包涵!
...全文
1130 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengqiao1999 2010-04-10
  • 打赏
  • 举报
回复
显示进度条窗体
using System.Threading;


namespace Threading
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private Thread worker = null;

public Thread BgWorker
{
get { return worker; }
set { worker = value; }
}

private void Form2_Load(object sender, EventArgs e)
{
this.progressBar1.Style = ProgressBarStyle.Marquee; //进度条
}



private void button1_Click_1(object sender, EventArgs e)
{
if (worker != null)
{
worker.Abort(); // 结束进程
}
this.Close();
}

private void Form2_FormClosing_1(object sender, FormClosingEventArgs e)
{
if (worker != null)
{
worker.Abort();
}
}

}
}
fengqiao1999 2010-04-10
  • 打赏
  • 举报
回复
using System.Threading;

namespace Threading
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
BackgroundWorker back = null;
Thread thread = null;
Form2 f2 = null;
private void button1_Click(object sender, EventArgs e)
{
back = new BackgroundWorker();
back.WorkerSupportsCancellation = true;
back.DoWork += new DoWorkEventHandler(back_DoWork);
back.RunWorkerCompleted += new RunWorkerCompletedEventHandler(back_RunWorkerCompleted);
back.RunWorkerAsync();

//显示进度条 窗体
f2 = new Form2();
f2.BgWorker = thread;
f2.ShowDialog();
}

void back_DoWork(object sender, DoWorkEventArgs e)
{

thread = Thread.CurrentThread;
e.Result = Func();// 方法里面的操作;//数据查询操作写这里,就是你比较慢的操作写这里 这里最好不要出现控件
}

void back_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Result != null)
{
if (f2 != null)
{
f2.Close();
}

if (thread != null)
{
thread = null;
}
//查询出来的数据在这里显示 ---- 显示的时候也会卡一下的
//e.Result 转换成DoWorker事件中传过来的类型
// MessageBox.Show(e.Result.ToString());
}
}

private string Func()
{
string str = String.Empty;
for (int i = 0; i < 30000; i++)
{
str += i.ToString();

}
return str;
}
}
lwghost 2010-04-10
  • 打赏
  • 举报
回复
像这种需要长时间执行的事件最好用backgroundworker控件,另开一线程后台执行事件
li45214521 2010-04-10
  • 打赏
  • 举报
回复
异步调用 无限进度条模式

111,112

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧