MTAThread中使用WebBrowser的问题

venlentine 2009-07-24 03:04:01
试了网上N多方法都没有成功

主程序
[MTAThread]
static void Main()
{

采用CreateInstance方式创建子窗口

子窗口中要使用WebBrowser,,只要一 new WebBrowser();就报错
当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。

用代理的方式,还是设置线程为单线程的方式,都无法创建

设置单线程方式创建
Thread t = new Thread(new ThreadStart(AddWebBrowser));
t.SetApartmentState(ApartmentState.STA);
t.Start();
private void AddWebBrowser()
{
web = new WebBrowser();
//SetText(web);
}

提示"在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。"

设置成用委托方式创建,也不行
private void AddWebBrowser()
{
//web = new WebBrowser();
SetText(web);
}

delegate void SetWebBrowser(WebBrowser wwb);
private void SetText(WebBrowser wwb)
{
if (this.palDetail.InvokeRequired)
{
SetWebBrowser d = new SetWebBrowser(SetText);
this.Invoke(d, new object[] { wwb });
}
else
{
wwb = new WebBrowser();
this.palDetail.Controls.Add(wwb);
}
}


求高手帮忙一下,那么多多线程的程序,难道都不使用WebBrowse控件吗??谢谢
...全文
188 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
szyicol 2009-07-26
  • 打赏
  • 举报
回复
关注一下
shrinerain 2009-07-24
  • 打赏
  • 举报
回复
main方法标记为STAThread ,并不表示你的程序就不能起多线程.
内容概要:本文介绍了一种基于双层优化的微电网系统规划设计方法,旨在通过Matlab代码实现,解决微电网在规划与运行的多目标、多层次决策问题。该方法将优化过程分为上下两层:上层通常负责容量配置、设备选址等长期规划决策,下层则聚焦于能量管理、出力调度等短期运行优化,通过迭代交互实现全局最优。文详细阐述了模型构建、约束条件设定、目标函数设计及求解算法实现流程,并提供了完整的Matlab代码供复现实验,有助于深入理解微电网系统的设计逻辑与优化机制。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、微电网、综合能源系统等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习和掌握双层优化理论在微电网规划设计的具体应用;② 通过阅读和运行Matlab代码,复现并改进经典优化模型,用于学位论文、科研项目或实际工程方案设计;③ 深入理解微电网分布式能源、储能与负荷的协同优化调度策略。; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践的结合。建议读者先理解双层优化的基本思想和数学模型,再结合代码逐行分析,重点关注变量定义、约束条件的代码转化以及主从问题间的迭代逻辑。鼓励在提供的代码基础上进行参数调整、场景扩展或算法改进,以深化学习效果。

111,132

社区成员

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

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

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