AppDomain. CurrentDomain. ProcessExit и очистка

У меня есть простое приложение, когда я должен остановить поток backround с помощью Остановки () функция, прежде чем приложение будет закрыто. Проблема состоит в том, что мое Основное () функция имеет несколько точек выхода (операторы возврата)

static void Main(string[] args)
{
/// some code
return;

// some code
return;

//// etc
}

Я пытался использовать AppDomain. CurrentDomain. ProcessExit как единственное место для уборки, но это никогда не называют (по крайней мере, в то время как существует фоновый поток). Существует ли способ разработать некоторый хороший способ реализовать это?

5
задан Captain Comic 19 January 2010 в 13:48
поделиться

3 ответа

Несмотря на то, что он трудно проверить, включается ли SSL способ по решению проблемы, в том, чтобы заставить SSL.

Из базы знаний Backscecloud поддерживают базу знаний :

Вы можете переписать URL-адреса в Web.config:

<configuration>
<system.webServer>
  <rewrite>
    <rules>
      <rule name="Redirect to HTTPS" stopProcessing="true">
        <match url=".*" />
        <conditions>
          <add input="{HTTP_CLUSTER_HTTPS}" pattern="^on$" negate="true" />
          <add input="{HTTP_CLUSTER-HTTPS}" pattern=".+" negate="true" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_HOST}{SCRIPT_NAME}" redirectType="SeeOther" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>
</configuration>

Вы можете заставить SSL в ASP.NET :

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">
  protected void Page_Load(object sender, System.EventArgs e)
  {
    if(Request.ServerVariables["HTTP_CLUSTER_HTTPS"] != "on")
    {
      if(Request.ServerVariables.Get("HTTP_CLUSTER-HTTPS") == null)
      {
        string xredir__, xqstr__;

        xredir__ = "https://" + Request.ServerVariables["SERVER_NAME"];
        xredir__ += Request.ServerVariables["SCRIPT_NAME"];
        xqstr__ = Request.ServerVariables["QUERY_STRING"];

        if (xqstr__ != "")
            xredir__ = xredir__ + "?" + xqstr__;

        Response.Redirect(xredir__);
      }
    }
    Response.Write("SSL Only");
  }
</script>

<html>
<head id="Head1" runat="server">
  <title>SSL Only</title>
</head>
<body>
</body>
</html>
-121--4293970-

Вы можете обернуть все вас код в отдельном методе и называть его от Main ():

static void Main(string[] args)
{
  DoSomething();
  TerminateThread(); // Thread.Stop() code goes here
}

static void DoSomething()
{
   /// some code
   return;

   // some code
   return;

   //// etc
}
5
ответ дан 14 December 2019 в 01:08
поделиться

Измените вызовы return; и вызовите подпрограмму очистки, которая также прервала процесс.

-121--4817850-

ДА! Вы можете закрыть приложение, чтобы оно больше не работало в фоновом режиме. Как и другие, finish () - это рекомендуемый Google способ, который не означает, что ваша программа закрыта.

System.exit(0);

При этом приложение будет закрыто, не оставляя ничего запущенного в фоновом режиме. Однако используйте это разумно и не оставляйте файлы открытыми, дескрипторы базы данных открытыми и т.д. Эти элементы обычно очищаются с помощью команды finish () .

Я лично НЕНАВИЖУ, когда я выбираю Выход в приложении, и он на самом деле не выходит.

-121--665847-

Можно использовать Application.StartExit Event

В соответствии с MSDN событие:

Происходит при завершении работы приложения.

2
ответ дан 14 December 2019 в 01:08
поделиться

ID рекомендуется загружать его и хранить jquery.js локально на том же сервере. Таким образом, если связанный с файлом снижается (не так).

Большой аргумент заключается в том, что если jQuery выпустит обновление, которое удаляет функцию, которую вам нужно, вам не будет важно, и у вас будет время, чтобы исправить его

-121--3677777-

Измените возврат ; вызовы и вызывают процедуру очистки, которая также прекратила процесс.

2
ответ дан 14 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: