c#SetCompatibleTextRenderingDefault必须在第一个之前调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#SetCompatibleTextRenderingDefault必须在第一个之前调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1744字,纯文字阅读大概需要3分钟。
内容图文
我试图搜索此异常,但我找不到任何解决方案
我使用下面的代码来调用.NET应用程序:
Assembly assem = Assembly.Load(Data);
MethodInfo method = assem.EntryPoint;
var o = Activator.CreateInstance(method.DeclaringType);
method.Invoke(o, null);
将被调用的应用程序具有一个Form并位于应用程序的EntryPoint中:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); //Exception
Application.Run(new Form1());
}
必须在应用程序中创建第一个IWin32Window对象之前调用SetCompatibleTextRenderingDefault.
编辑:
Assembly a = Assembly.Load(Data);
MethodInfo method = a.GetType().GetMethod("Start");
var o = Activator.CreateInstance(method.DeclaringType);
method.Invoke(o, null);
最佳答案:
您应该创建一个新方法,跳过初始化并查看Start方法的反射.但Application.Start将阻止当前线程.如果您不想启动新的消息泵,则应尝试使用反射查找Form类.
class Program
{
static void Main(string[] args)
{
var path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
var filename = Path.Combine(path, "WindowsFormsApplication1.exe");
var assembly = Assembly.LoadFile(filename);
var programType = assembly.GetTypes().FirstOrDefault(c => c.Name == "Program"); // <-- if you don't know the full namespace and when it is unique.
var method = programType.GetMethod("Start", BindingFlags.Public | BindingFlags.Static);
method.Invoke(null, new object[] { });
}
}
和装载组件:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Start();
}
public static void Start() // <-- must be marked public!
{
MessageBox.Show("Start");
Application.Run(new Form1());
}
}
这在这里工作!
内容总结
以上是互联网集市为您收集整理的c#SetCompatibleTextRenderingDefault必须在第一个之前调用全部内容,希望文章能够帮你解决c#SetCompatibleTextRenderingDefault必须在第一个之前调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。