所以我有所有问题中最奇怪的。我只是想写一个简单的 c# WinForms 工具供个人使用时遇到它。我将从头开始,真正的问题将在最后。
所以我做了一个 NotifyIcon 应用程序。这很简单,我刚刚做了:
public class MyApp: ApplicationContext
{
NotifyIcon icon;
public MyApp()
{
// ...
}
// ...
}
并像所有其他 WinForms 应用程序一样启动该应用程序:
Application.Run(new MyApp());
现在我添加了一个新的 MyApp.Data 类项目,其中包含一个本地数据库,并使用 edmx 帮助程序来生成我的 EF 模型。我添加了一个名为 Database 的静态类,它应该包含我的所有查询。
public static class DataBase
{
static MyAppModel db = new MyAppModel();
public static void AddEntry(SomeThing st)
{
db.SomeThings.AddObject(st);
db.SaveChanges();
}
public static String[] GetSomeThings(int numberOfEntries)
{
return db.SomeThings.OrderBy(x => x.Date).Select(x => x.Title).Take(numberOfEntries).ToArray();
}
}
回到 WinForms NotifyIcon 项目,我添加了 MyApp.Data 程序集(和 EF 程序集),当我调用时DataBase.AddEntry(x)
一切正常,但是当我使用时Database.GetSomeThings(10)
一切都中断了。
var x = Database.GetSomeThings(10);
String[] y = Database.GetSomeThings(10);
只是默默地失败而没有错误。x
并且y
两者都不会出现在当地人中,也无法观看。有人有想法吗?
编辑:我直接绑定到组合框,它神奇地起作用了。现在我打开了自动完成模式和源,我收到一条错误消息:
Für den aktuellen Thread muss der STA-Modus (Single Thread Apartment) festgelegt werden, bevor OLE-Aufrufe ausgeführt werden können。Stellen Sie sicher, dass die Hauptfunktion mit STAThreadAttribute gekennzeichnet ist。
不幸的是德语,但我想我可以解决这个问题:
http://msdn.microsoft.com/de-de/library/ms182351%28vs.80%29.aspx