【发布时间】:2011-03-03 14:26:02
【问题描述】:
我在从另一个方法调用静态方法时遇到问题。
我的静态方法在一个单独的项目中,但我检查了引用和 using 语句,一切似乎都正确。以下是简化版。
静态方法
namespace Backend
{
static public class StartUpChecks
{
public static void RunAtStart()
{
// Calls other static methods and sets application settings
}
}
}
Windows 窗体
using Backend;
namespace UI
{
public partial class mainForm:Form
{
public mainForm()
{
InitializeComponent();
}
private void mainForm_Load(object sender, EventArgs e)
{
//MessageBox.Show("It Works");
StartUpChecks.RunAtStart();
}
}
}
当我运行程序时,它就会停止。我在 OnLoad 事件处理程序上设置了一个断点,但它永远不会被击中。如果我在 MessageBox 中注释并注释掉方法调用,事件就会触发并显示消息框。
我在 VS 中没有显示错误。我尝试创建另一个方法 Test(),并将 StartUpChecks.RunAtStart() 移入其中。然后我将 Test() 调用放在 MessageBox 之后。事件触发,消息框显示,但不会移动到 Test() 方法。
同样在 VS 中调试时,我无法重新启动进程,也无法进入/跳过任何内容。
任何想法我做错了什么?
编辑---
完整的静态类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataSourceManager;
using UserValidator;
namespace Backend
{
static public class StartUpChecks
{
public static void RunAtStart()
{
CheckUserAuthorised();
CheckUserAdmin();
SetConnection("myApplication");
}
private static void SetConnection(string appName)
{
AppControl.Connection = ConnectionSetter.SetConnectionString(appName);
}
private static void CheckUserAuthorised()
{
UserValidation checkMe = new UserValidation(AppControl.Connection);
AppControl.UserIsAuthorised = checkMe.UserIsAuthorised();
}
private static void CheckUserAdmin()
{
UserValidation checkMe = new UserValidation(AppControl.Connection);
AppControl.UserIsAdmin = checkMe.UserIsAdmin();
}
}
}
【问题讨论】:
-
StartUpChecks 类中还有什么?是否有可能抛出异常的静态构造函数?
-
@Blorgbeard 不,没有静态构造函数。我需要一个吗?这是问题所在吗?
-
在这种状态下调试时,如果在Visual Studio中按下Pause(Ctrl+Break),哪一行会高亮显示? (希望不是 Application.Run())
-
@Slotty,这不仅仅是我的想法。
-
您的 VS 调试器是否配置为处理抛出异常而不是未处理的异常?
标签: c# winforms static-methods