所以我遇到了最棘手的问题。我只是想编写一个简单的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
都不会显示在当地人身上,也无法观看。有人有个主意吗?
编辑:我直接绑定到comboBox,它神奇地工作。现在我打开了autocompletemode和source,我收到一条错误消息:
Fürdenaktuellen Thread muss der STA-Modus(单线公寓)festgelegt werden,bevor OLE-Aufrufeausgeführtwerdenkönnen。 Stellen Sie sicher,dass die Hauptfunktion mit STAThreadAttribute gekennzeichnet ist。
不幸的是德国人,但我想我可以解决这个问题:
http://msdn.microsoft.com/de-de/library/ms182351%28vs.80%29.aspx
答案 0 :(得分:1)
所以我认为这解决了这个问题(为应用程序制作了一个起点,而且我把它变成了单身,其他一切都是愚蠢的imho)。
public static class Program
{
private static MyApp activeInstance;
[STAThread]
public static void Main()
{
if (activeInstance == null)
{
activeInstance = new MyApp();
Application.Run(activeInstance);
}
}
}
然而,如果有人知道我在这里做了什么,我会很感激。那些[ tags ]
可能是我不理解的编程中的最后一件事。