在NotifyIcon应用程序中使用多个项目

时间:2012-12-22 15:44:06

标签: c# entity-framework project-management notifyicon applicationcontext

所以我遇到了最棘手的问题。我只是想编写一个简单的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);

只是默默地失败而没有错误。 xy都不会显示在当地人身上,也无法观看。有人有个主意吗?

编辑:我直接绑定到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

1 个答案:

答案 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 ]可能是我不理解的编程中的最后一件事。