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

本文关键字:项目 NotifyIcon 应用程序 | 更新日期: 2023-09-27 17:49:21

所以我遇到了最奇怪的问题。我只是想写一个简单的c# WinForms工具供个人使用,当我遇到它。我将从头开始,真正的问题将在最后。

我创建了一个NotifyIcon应用程序。这很简单,我刚刚做了:

public class MyApp: ApplicationContext
{
    NotifyIcon icon;
    public MyApp()
    {
        // ...
    }
    // ...
}

并像其他WinForms应用程序一样启动应用程序:

Application.Run(new MyApp());

现在我添加了一个新的MyApp。数据类项目,它包含一个本地数据库,并使用edmx helper来生成我的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。数据汇编(和EF汇编)和当我调用DataBase.AddEntry(x)时一切都工作得很好,但是当我使用Database.GetSomeThings(10)时一切都中断了。

var x = Database.GetSomeThings(10);
String[] y = Database.GetSomeThings(10);

只是静默失败,没有错误。xy都不出现在本地,不能被观察。有人知道吗?

编辑:我直接绑定到comboBox,它神奇地工作。现在我打开自动完成模式和源,我得到一个错误消息:

f rden aktuellen Thread muss der STA-Modus (Single Thread Apartment) festgelegt werden, bever OLE-Aufrufe ausgef hrt werden können。

不幸是德语,但我想我能解决这个问题:

http://msdn.microsoft.com/de-de/library/ms182351%28vs.80%29.aspx

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

所以我认为这解决了问题(为应用程序创建一个起点,如果我将其设置为单例,那么其他一切都将是愚蠢的)。

    public static class Program
    {
        private static MyApp activeInstance;
        [STAThread]
        public static void Main()
        {
            if (activeInstance == null)
            {
                activeInstance = new MyApp();
                Application.Run(activeInstance);
            }
        }
    }

如果有人知道我在这里做了什么,我会很感激。那些[ tags ]可能是编程中我最不懂的东西了