//private UserProcessState _UserProcessState = UserProcessState.Processing ; ///// <summary> ///// 用户选择状态 ///// </summary> //public virtual UserProcessState UserProcessState //{ // get { return _UserProcessState; } // set { _UserProcessState = value; } //} //private UserProcessState _DefaultUserProcessState = UserProcessState.Accept; ///// <summary> ///// 默认的选择状态 ///// </summary> //public virtual UserProcessState DefaultUserProcessState //{ // get { return _DefaultUserProcessState; } // set { _DefaultUserProcessState = value; } //} /// <summary> /// 等待用户的选择操作,本函数将不返回直到用户确定选择或取消选择 /// </summary> /// <remarks>本函数向当前应用程序添加自定义的消息过滤器,并开始循环处理当前应用程序的消息,若用户确定或取消的选择操作则退出循环处理</remarks> /// <returns>用户是否选择的某个项目</returns> public virtual void WaitUserSelected() { //Win32.NativeMSG msg = new Win32.NativeMSG(); // Process messages until exit condition recognised bolExitLoop = false; bolUserAccept = false; MessageFilter.ExcludePaintMessageFilter.Enabled = true; Win32Message.ClearMessage(); //System.Windows.Forms.Application.DoEvents(); MessageFilter.ExcludePaintMessageFilter.Enabled = false; System.Windows.Forms.Application.AddMessageFilter(this); //this.UserProcessState = WinForms.UserProcessState.Processing; UserProcessState state = UserProcessState.Processing; WindowInformation info = new WindowInformation(this); while (Win32Message.Wait()) { //User32.GetMessage(ref msg, 0, 0, 0); // Windows32.User32.GetMessage( ref msg , 0 , 0 , 0 ); // Windows32.User32.TranslateMessage( ref msg ); // Windows32.User32.DispatchMessage( ref msg ); System.Windows.Forms.Application.DoEvents(); //state = this.UserProcessState ; if (this.Visible == false) { break; } if (state == UserProcessState.Accept || state == UserProcessState.Cancel) { break; } if (bolExitLoop) { break; } }//while System.Windows.Forms.Application.RemoveMessageFilter(this); Win32Message.ClearMessage(); //if (state == UserProcessState.Processing) //{ // state = this.DefaultUserProcessState; //} if (this.AutoClose) { this.Hide(); } //return state == UserProcessState.Accept ; }
public void RollbackOnError(UserProcessState state, string userName) { switch (state) { case UserProcessState.WIN_USER_ERROR: //Hvis brugeroprettelse er færdig, stop her (der kan være nogel oprettede brugere i batch oprettelse) break; case UserProcessState.WIN_GROUP_ERROR: { UserPrincipal user = UserPrincipal.FindByIdentity(context, userName); UserManagement management = new UserManagement(user); management.RemoveWindowsAccount(user); //textBox2.Text += Enum.GetName(typeof(UserProcessState), BatchState.State) + "\n"; break; } case UserProcessState.IIS_WEBSITE_ERROR: { break; } case UserProcessState.VIRTUAL_DIRECTORY_ERROR: { //Hvis virtual directory oprettelse fejler, slet bruger og website UserPrincipal user = UserPrincipal.FindByIdentity(context, userName); UserManagement management = new UserManagement(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + userName + "\\"; iis.RemoveWebsite(userName, physicalPath); } break; case UserProcessState.SQL_LOGIN_ERROR: { //hvis sql login fejler, slet vdir, website,bruger Student student = db.Students.Where(x => x.Credentials.FTPUserName == userName).Single(); UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); UserManagement management = new UserManagement(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); } break; case UserProcessState.SQL_DB_ERROR: { //hvis dboprettelse fejler, slet dblogin,vdir,website og bruger Student student = db.Students.Where(x => x.Credentials.FTPUserName == userName).Single(); UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); UserManagement management = new UserManagement(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); } break; case UserProcessState.SQL_USER_ERROR: { //hvis dboprettelse fejler, slet alt for denne bruger Student student = db.Students.Where(x => x.Credentials.FTPUserName == userName).Single(); UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); UserManagement management = new UserManagement(user); string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); sql.DeleteLoginAndDB(student.Credentials.FTPUserName, student.Credentials.FTPUserName); break; } case UserProcessState.SQL_INSERT_USER_DATA_ERROR: { //hvis dboprettelse fejler, slet alt for denne bruger //UserPrincipal user = UserPrincipal.FindByIdentity(context, student.Credentials.FTPUserName); //UserManagement management = new UserManagement(user); //string physicalPath = "C:\\inetpub\\wwwroot\\" + student.Credentials.FTPUserName + "\\"; //iis.RemoveWebsite(student.Credentials.FTPUserName, physicalPath); //iis.RemoveVirtualDirectory("_FTP", "/" + student.Credentials.FTPUserName, physicalPath); //sql.DeleteLoginAndDB(student.Credentials.FTPUserName, student.Credentials.FTPUserName); break; } } }