case1)
Application.Exit();

case2)
System.Diagnostics.Process.GetCurrentProcess().Kill();

using System;
using System.Collections.Generic;
using System.Linq;
using Systehttp://m.Text.Json;
using StackExchange.Redis;

class Program
{
    public static void Main(string[] args)
    {
        REDISCHK nmm = new REDISCHK();
        nmm.RUN();
    }
}
class REDISCHK
{
    public void RUN()
    {
        RedisStore redis = new RedisStore("localhost:6379");

        /*---------------------------------------------------------------------------
        // key, value로 저장
        redis.SetValue("test1", "ans-test1");

        // key로 value를 찾는다.
        //Console.WriteLine(redis.GetValue("test1"));
       ---------------------------------------------------------------------------*/

       /*
        FILE을 읽어서, KEY=ifReceiver.sender
        VALUE=formatText
       */
    }
}

 

 

# DispatcherTimer  활용사례

using System;
using System.Windows.Threading;
using Systehttp://m.Windows.Forms;
using System.Timers;
using System.IO;

namespace APM
{
    public partial class APMMain : Form
    {
        private DispatcherTimer displayTimer1 = new DispatcherTimer(); //유가
        private DispatcherTimer displayTimer2 = new DispatcherTimer(); //코스닥
        private DispatcherTimer displayTimer3 = new DispatcherTimer(); //파생
        private DispatcherTimer displayTimer4 = new DispatcherTimer(); //채권

        private int sec1, sec2, sec3, sec4;


        public APMMain()
        {
            InitializeComponent();

            InitControl();
        }
        void InitControl()
        {
            

            displayTimer1.Interval = TimeSpan.FromSeconds(interval);
            displayTimer1.Tick += new EventHandler(displayTimer_Tick);
            sec1 = 0;
            displayTimer2.Interval = TimeSpan.FromSeconds(interval);
            displayTimer2.Tick += new EventHandler(displayTimer_Tick);
            sec2 = 0;
            displayTimer3.Interval = TimeSpan.FromSeconds(interval);
            displayTimer3.Tick += new EventHandler(displayTimer_Tick);
            sec3 = 0;
            displayTimer4.Interval = TimeSpan.FromSeconds(interval);
            displayTimer4.Tick += new EventHandler(displayTimer_Tick);
            sec4 = 0;

            displayTimer1.Start();
            displayTimer2.Start();
            displayTimer3.Start();
            displayTimer4.Start();

            
        }

        void displayTimer_Tick(object sender, EventArgs e)
        {
            if ((sender as DispatcherTimer).Equals(displayTimer1))
            {
                TimeSpan t = TimeSpan.FromSeconds(sec1++);
                timer1.Text = string.Format("{0:D2}:{1:D2}", t.Minutes, t.Seconds);
            }

            else if ((sender as DispatcherTimer).Equals(displayTimer2))
            {
                TimeSpan t = TimeSpan.FromSeconds(sec2++);
                timer2.Text = string.Format("{0:D2}:{1:D2}", t.Minutes, t.Seconds);
            }

            else if ((sender as DispatcherTimer).Equals(displayTimer3))
            {
                TimeSpan t = TimeSpan.FromSeconds(sec3++);
                timer3.Text = string.Format("{0:D2}:{1:D2}", t.Minutes, t.Seconds);
            }

            else if ((sender as DispatcherTimer).Equals(displayTimer4))
            {
                TimeSpan t = TimeSpan.FromSeconds(sec4++);
                timer4.Text = string.Format("{0:D2}:{1:D2}", t.Minutes, t.Seconds);
            }
        }

        #region WndProc
        protected override void WndProc(ref Message m)
        {

            switch (m.Msg)
            {
                default:
                    break;
            }
            base.WndProc(ref m);
        }
        #endregion   

        public void SetRegin()
        {
            //
        }
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;
                return cp;
            }
        }
    }
}

(1)라이선스 에러 발생시 대처 방법 안내/(2)마이그레이션 방법
(1)라이선스 에러 발생시 대처 방법 안내/(2)마이그레이션 방법
(1)라이선스 에러 발생시 대처 방법 안내/(2)마이그레이션 방법

마이그레이션
라이선스 에러 발생시 대처 방법 안내 - 마이그레이션 방법

ComponentOne(컴포넌트원)을 사용하여 개발한 솔루션 빌드 또는 실행시에 발생하는 라이선스의 에러에 대해서 알아보고, 이를 대처 하는 방법을 설명합니다. 

빌드 또는 실행 시, 라이선스 에러가 발생하는 주요 원인은 아래와 같습니다. 

구버전에서 신버전으로 업그레이드를 하시는 경우
다른 PC에서 다른 C1버전으로 개발한 소스를 가져와서 사용하시는 경우
체험판 상태에서 프로젝트를 개발하다가 정식 라이선스를 사용하시는 경우

위와 같은 경우, 
이전 프로젝트에서 사용했던 Licenses.licx 또는 DLL들의 버전 정보와 현재 설치된 ComponentOne 제품의 버전 정보가 일치하지 않아 라이선스 에러 또는 빌드 에러가 발생할 수 있습니다.
이 경우, 라이선스 마이그레이션 과정으로 통해 프로젝트에서 참조 중인 DLL들과 Licenses.licx 정보를 업데이트하면 됩니다. 
아래의 과정을 따라해 주시기 바랍니다. 

라이선스 활성화 확인

1. 먼저 프로젝트를 빌드하기 위해서는 정상적으로 라이선스가 설치(액티베이션) 되어 있어야 합니다. 라이선스가 액티베이션(활성화)이 되어 있는지 확인하기 위해서는 아래와 같은 과정을 따라하시면 됩니다.

[2020 V2 이상 버전]
구매 시에 메일의 링크를 통해서 받으신 설치 프로그램인 ComponentOneControlPanelKR.exe를 실행하셔서 아래와 같이 라이선스 - 비활성화 탭을 클릭합니다.
라이선스 키 부분의 콤보박스를 클릭하면 현재 설치되어 있는 라이선스를 보실 수 있습니다. 여기에서 라이선스가 보여진다면 액티베이션이 되어 있는 것입니다.

또는 아래와 같은 GrapeCity License Manager를 통해서도 확인이 가능합니다.

- 프로그램 위치: C:\ProgramData\GrapeCity\gclm\gclm.exe 
(윈도우 시작 버튼 클릭 후 License Manager로 검색하여 실행하실 수도 있습니다.) 

프로그램에서 Product License Activated 항목이 보여 진다면 해당 제품 (아래 예제의 경우에는 ComponentOne Studio Enterprise 제품)이 정상적으로 활성화가 된 것입니다.

[2020 V1 이하 버전]

C1LicenseActivation 프로그램을 사용하시면 됩니다.

해당 프로그램은 아래의 위치에 존재합니다.

C:\Program Files (x86)\Common Files\ComponentOne Shared\C1LicenseActivation.exe 
이 프로그램에서 Serial Number부분의 (물음표) 버튼을 클릭하셨을 때 라이선스가 보여진다면 정상적으로 액티베이션(활성화)이 되어 있다고 생각하시면 됩니다.

이렇게 확인했을 때 액티베이션이 되어 있지 않다면 아래의 글을 참고하셔서 라이선스 
액티베이션을 해주시기 바랍니다.

2020 V2 이상 버전
(2020 V2 이상) 온라인 라이선스 활성화 및 비활성화
(2020 V2 이상) 오프라인 라이선스 인증 및 해제

2020 V1 이하 버전  2020년 10월 이후 구매자
(2020V2 이상) 하위 버전 라이선스 활성화/비활성화 방법 

2020 V1 이하 버전  2020년 9월 이전 구매자
ComponentOne 온라인 라이선스 활성화 및 비활성화

프로젝트 마이그레이션 방법 /프로젝트 마이그레이션 방법 /프로젝트 마이그레이션 방법 /프로젝트 마이그레이션 방법 /프로젝트 마이그레이션 방법 

[방법1: 프로젝트 다시 빌드]

이제 라이선스가 액티베이션(활성화) 되었다면 VisualStudio 빌드 메뉴에서 솔루션 정리 후, 솔루션 다시 빌드한 다음 프로그램을 실행해 보시기 바랍니다.
이것만으로 문제가 해결되는 경우가 있습니다.

[방법2: DLL 및 License.licx 삭제 및 재생성 ]

위 방법을 실행하여도 동일한 문제가 발생한다면, 반드시 프로젝트를 백업하시고 아래의 방법을 따라 마이그레이션을 진행하여 주시기 바랍니다.
솔루션 탐색기의 Properties 하위에 있는 licenses.licx파일과 참조 하위에 있는 C1으로 시작하는 이름을 따로 적어둔 후 모든 dll을 삭제합니다.

실제 프로젝트가 존재하는 경로의 필요 없는 Bin폴더나 Debug 폴더를 모두 삭제합니다.
(만약 Visual Studio가 실행 중이라 해당 폴더가 지워지지 않는다면, Visual Studio를 종료한 다음 삭제합니다.)

솔루션 탐색기의 해당 동일 프로젝트에서 마우스 우클릭 후 빈 Windows Form을 하나 추가합니다.

새로 생성한 빈 폼에 도구 상자로부터 현재 사용중인 C1의 컨트롤을 드래그하여 올려놓습니다.
C1.Win.C1Chart.Toolbar.4.5.2 등의 일부 dll은 도구 상자의 C1 컨트롤을 끌어와 추가하시더라도 자동으로 추가되지 않을 수 있습니다.

이 경우, 참조를 직접 추가하시는 방법을 안내드립니다.참조를 마우스 우클릭하여 참조 추가를 선택합니다.
솔루션 빌드 시, 오류가 발생하는 네임스페이스를 확인하여 [어셈블리 - 확장] 탭에서 찾아 직접 추가합니다.
추가했던 빈 Windows Form을 삭제합니다.

솔루션 내 C1 컨트롤을 사용 중인 모든 프로젝트에 대해 위의 1~5 단계를 반복합니다.
전체 솔루션을 Rebuild 한 후, 프로그램을 실행합니다.
이제 프로젝트 마이그레이션 과정이 완료되었습니다. 




$ find ./ -name licenses.licx | xargs grep Version
./APM/APM/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/APM/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/APMCommManager/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/AMS/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20113.21313, Culture=neutral, PublicKeyToken=a22e16972c085838
./APM/Screen/AMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/AMS/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/CFG/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/CFG/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/DBM/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20113.21313, Culture=neutral, PublicKeyToken=a22e16972c085838
./APM/Screen/DBM/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/DST/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20113.21313, Culture=neutral, PublicKeyToken=a22e16972c085838
./APM/Screen/DST/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/DST/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/INQ/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/INQ/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/MWM/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/MWM/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20113.21313, Culture=neutral, PublicKeyToken=a22e16972c085838
./APM/Screen/MWM/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/PMA/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/PMA/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/PMS/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/PMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/PMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/POP/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/POP/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/RPT/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/RPT/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/RPT/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20113.21313, Culture=neutral, PublicKeyToken=a22e16972c085838
./APM/Screen/RTP/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/RTP/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/SEC/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20113.21313, Culture=neutral, PublicKeyToken=a22e16972c085838
./APM/Screen/SEC/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/SEC/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/SMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/SMS/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20113.21313, Culture=neutral, PublicKeyToken=a22e16972c085838
./APM/Screen/SMS/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/TAT/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/TAT/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/TMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/TMS/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20113.21313, Culture=neutral, PublicKeyToken=a22e16972c085838
./APM/Screen/TPS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/TPS/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/TRA/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/TRA/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.1.20113.214, Culture=neutral, PublicKeyToken=79882d576c6336da
./APM/Screen/TRA/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.6.20113.647, Culture=neutral, PublicKeyToken=79882d576c6336da

xterm@DESKTOP-VVAIF4D MINGW64 /d/takeover/exture_apm_30_00
$



After Version Up) After Version Up) After Version Up) After Version Up) After Version Up) After Version Up) After Version Up)



xterm@DESKTOP-VVAIF4D MINGW64 ~/Downloads/tmp/versionup_ver_20_00/APM
$ find ./ -name licenses.licx | xargs grep Version
./APM/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./APMCommManager/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/AMS/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=a22e16972c085838
./Screen/AMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/CFG/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/DBM/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/DST/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/DST/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=a22e16972c085838
./Screen/INQ/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/INQ/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/MWM/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/MWM/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=a22e16972c085838
./Screen/PMA/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/PMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/POP/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/RPT/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/RPT/Properties/licenses.licx:C1.C1Excel.C1XLBook, C1.C1Excel.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/RPT/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=a22e16972c085838
./Screen/RTP/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/SEC/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=a22e16972c085838
./Screen/SEC/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/SMS/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=a22e16972c085838
./Screen/SMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/TAT/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/TMS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/TMS/Properties/licenses.licx:C1.Win.C1Chart.C1Chart, C1.Win.C1Chart.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=a22e16972c085838
./Screen/TPS/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da
./Screen/TRA/Properties/licenses.licx:C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.4, Version=4.0.20183.338, Culture=neutral, PublicKeyToken=79882d576c6336da

xterm@DESKTOP-VVAIF4D MINGW64 ~/Downloads/tmp/versionup_ver_20_00/APM



1.
Component ONE 최신버젼, 도구모음 등록안되는 형상(?)


2.
license.licx 증명서가 삭제되었을때에, 다시 발급받아야 하는가,ㅡ,ㅡ(?)


3.
참조) 라이선스 에러 발생시 대처 방법 안내 - 마이그레이션 방법

license.licx 를 여러개의 프로젝트에서 사용할때에, 즉 여러개의 license.licx가 존재할경우에,

삭제된 프로젝트에 다른 프로젝트의 license.licx를 가져와서 복사 & 붙여넣기해서 재사용이 가능한가,ㅡ,ㅡ(?)


4. 프로젝트의 참조에 사용중인 DLL버젼과 도구모음에 등록되어진 DLL버젼이 틀린경우에 어떤 현상이 나타나는가(?)

단순 편집만 안되는지, 실행하는데는 문제는 없는가,ㅡ,ㅡ(?) 일단 편집은 안되는걸로 확인이 됩니다.

https://dev.mescius.co.kr/bbs/board.php?bo_table=component_faq&wr_id=25&page=1











/*
KEYPOINT) DateTime now = DateTime.ParseExact(MANUAL_DT, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);
*/


using System;
using System.Timers;
using System.IO;


class Program
{
    public static void Main()
    {
        CHKNMNM nmm = new CHKNMNM();
        nmm.CALCCHK();
        nmm.REALCHK();
        nmm.DISPCHK();
    }
}

class CHKNMNM
{
    string[] HOLIDAY = new string[]
    {
        "2024-01-01",
        "2024-02-09",
        "2024-02-12",
        "2024-03-01",
        "2024-04-10",
        "2024-05-01",
        "2024-05-06",
        "2024-05-15",
        "2024-06-06",
        "2024-08-15",
        "2024-09-16",
        "2024-09-17",
        "2024-09-18",
        "2024-10-03",
        "2024-10-09",
        "2024-12-25",
    };
    string[] HOLIDAYNM = new string[]
    {
        "2024-01-01(신정)",
        "2024-02-09(구정)",
        "2024-02-12(구정)",
        "2024-03-01(삼일절)",
        "2024-04-10(선거일)",
        "2024-05-01(노동절)",
        "2024-05-06(어린이날대체)",
        "2024-05-15(부처님오신날)",
        "2024-06-06(현충일)",
        "2024-08-15(광복절)",
        "2024-09-16(추석)",
        "2024-09-17(추석)",
        "2024-09-18(추석)",
        "2024-10-03(개천절)",
        "2024-10-09(한글날)",
        "2024-12-25(크리스마스)",
    };
    string[] YOIL = new string[]
    {
    "MONDAY",
    "TUESDAY",
    "WEDNESDAY",
    "THURSDAY",
    "FRIDAY",
    "SATURDAY",
    "SUNDAY",
    };
    string[] RANDOMNM = new string[]
    {
    "CHO","PARK","JIN",
    };
    string CHKDateFormat = "yyyy-MM-dd";

    const int MAX_CNT = 1024;
    string[] CHKNM = new string[MAX_CNT];
    string[] CHKDT = new string[MAX_CNT];
    string[] CHKYO = new string[MAX_CNT];
    string[] CHKRM = new string[MAX_CNT];

    string MANUAL_DT = "20230101121212";

    public void CALCCHK()
    {
        int ii = 0; //(1-MON, 7-SUNDAY)
        int day = 0;
        int mm = 0;
        int kk = 0;

        DateTime now = DateTime.ParseExact(MANUAL_DT, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);

        DateTime calcnow;

        //POINT:CHKRM's INCREASE ITSELF
        //POINT:RANDOMNM's INCREASE ITSELF
        //POINT:CHKRM's INCREASE ITSELF
        //POINT:RANDOMNM's INCREASE ITSELF

        while (true)
        {
            calcnow = now.AddDays(day);
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) < 20231231)
            {
                day++;
                continue;
            }
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) == 20250101) break;
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) == 20231231) ii = 7;




            int check = 0;
            for (int ff = 0; ff < HOLIDAY.Length; ff++)
            {
                if (calcnow.ToString(CHKDateFormat) == HOLIDAY[ff])
                {
                    check = 100;
                    break;
                }
            }


            if (check == 0)
            {
                if (ii == 4) CHKRM[kk++] = RANDOMNM[mm++ % 3];
                else if (ii == 5) CHKRM[kk++] = RANDOMNM[mm++ % 3];
            }
            else
            {
                if (ii == 1) CHKRM[kk++] = "PARK";
                else if (ii == 2) CHKRM[kk++] = "JIN";
                else if (ii == 3) CHKRM[kk++] = "CHO";
                else if (ii == 4) CHKRM[kk++] = RANDOMNM[mm++ % 3];
                else if (ii == 5) CHKRM[kk++] = RANDOMNM[mm++ % 3];
            }

            day++;
            ii++;

            if (ii == 8) ii = 1;
        }
    }
    public void REALCHK()
    {
        int ii = 0; //(1-MON, 7-SUNDAY)
        int day = 0;
        int kk = 0;
        int sum = 0;

        DateTime now = DateTime.ParseExact(MANUAL_DT, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);
        DateTime calcnow;

        while (true)
        {
            calcnow = now.AddDays(day);
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) < 20231231)
            {
                day++;
                continue;
            }
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) == 20250101) break;
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) == 20231231) ii = 7;




            int check = 0;
            for (int ff = 0; ff < HOLIDAY.Length; ff++)
            {
                if (calcnow.ToString(CHKDateFormat) == HOLIDAY[ff])
                {
                    check = 100;
                    break;
                }
            }


            if (check == 0)
            {
                if (ii == 1)
                {
                    CHKNM[sum] = "PARK";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 2)
                {
                    CHKNM[sum] = "JIN";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 3)
                {
                    CHKNM[sum] = "CHO";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 4)
                {
                    CHKNM[sum] = CHKRM[kk++];
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 5)
                {
                    CHKNM[sum] = CHKRM[kk++];
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 6)
                {
                    CHKNM[sum] = "HOLIDAY";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 7)
                {
                    CHKNM[sum] = "HOLIDAY";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
            }
            else if (check == 100)
            {
                CHKYO[sum] = YOIL[ii - 1];
                CHKDT[sum] = calcnow.ToString(CHKDateFormat);

                int subcheck = 0;
                for (int ff = 0; ff < HOLIDAY.Length; ff++)
                {
                    if (CHKDT[sum] == HOLIDAY[ff])
                    {
                        CHKNM[sum] = HOLIDAYNM[ff];
                        subcheck = 100;
                        break;
                    }
                }
                if (subcheck == 0)
                {
                    CHKNM[sum] = "SPECIAL";
                }
            }

            day++;
            ii++;
            sum++;

            if (ii == 8) ii = 1;
        }
    }
    public void DISPCHK()
    {
        int kk = 0;
        int ____park_k = 0, ____jin_k = 0, ____cho_k = 0;

        while (true)
        {
            string dateTxt = "";
            string nameTxt = "";

            int check = 0;
            for (int ii = 0; ii < 7; ii++)
            {
                dateTxt += CHKDT[kk] + " ";
                nameTxt += CHKNM[kk] + " ";

                if (CHKNM[kk] == "PARK") ____park_k++;
                else if (CHKNM[kk] == "JIN") ____jin_k++;
                else if (CHKNM[kk] == "CHO") ____cho_k++;

                if (CHKDT[kk] == "2024-12-31")
                {
                    check = 100;
                    break;
                }

                kk++;
            }
            Console.WriteLine(dateTxt);
            Console.WriteLine(nameTxt);

            if (check == 100) break;
        }
    }
}







'c# 언어 > 초급과정' 카테고리의 다른 글

프로세스.종료  (0) 2024.03.16
DispatcherTimer 활용사례  (0) 2024.03.12
SetWindowLong 함수란 무엇인가  (0) 2024.01.30
Windows Form 실행시에 Message 순서출력  (0) 2024.01.06
공백여러개를 하나로 정리하기  (0) 2023.12.13

GC(Garbage Collection)는 객체가 더 이상 사용되지 않을 때 자동으로 메모리에서 제거하는 기능입니다. 하지만 GC에도 몇 가지 문제점이 있습니다.

  1. 성능 저하: GC는 메모리를 정리하기 위해 일정 시간 동안 애플리케이션의 실행을 중단 시키며, 이로 인해 애플리케이션의 성능이 저하 될 수 있습니다. 특히 대용량 데이터를 처리하는 경우에는 GC로 인한 성능 저하가 더욱 두드러질 수 있습니다.
  2. 메모리 누수: GC가 모든 객체를 완벽하게 제거하지 못할 경우 메모리 누수가 발생할 수 있습니다. 메모리 누수는 애플리케이션이 사용할 수 있는 메모리를 감소시키고, 시스템의 성능을 저하시킬 수 있습니다.
  3. 예측 불가능성: GC의 실행 시점은 예측하기 어렵습니다. 이로 인해 애플리케이션의 안정성이 떨어질 수 있습니다.
  4. 과도한 메모리 사용: GC는 메모리를 자동으로 관리하기 때문에 개발자가 메모리 사용량을 정확하게 제어하기 어렵습니다. 이로 인해 과도한 메모리 사용이 발생할 수 있습니다.

이러한 문제점을 해결하기 위해서는 적절한 GC 알고리즘을 선택하고, 메모리 사용량을 모니터링하고, 메모리 관리 전략을 수립하는 등의 노력이 필요합니다.

Sample.File.Explorer/Source

*.Designer.cs 부분 소스
this.treeView1.BeforeCollapse += new Systehttp://m.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeCollapse);
this.treeView1.BeforeExpand += new Systehttp://m.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeExpand);
this.treeView1.NodeMouseClick += new Systehttp://m.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick);

 

 

      

 

*.cs 부분 소스

private void Form1_Load(object sender, EventArgs e)
        {
            //현재 사용자 정보 표시
            System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
            label1.Text = "현재 사용자  :" + identity.Name;

            //현재 로컬 컴퓨터에 존재하는 드라이브 정보 검색하여 트리노드에 추가
            DriveInfo[] allDrives = DriveInfo.GetDrives();

            foreach (DriveInfo dname in allDrives)
            {
                if (dname.DriveType == DriveType.Fixed)
                {
                    if (dname.Name == @"C:\")
                    {
                        TreeNode rootNode = new TreeNode(dname.Name);
                        rootNode.ImageIndex = 0;
                        rootNode.SelectedImageIndex = 0;
                        treeView1.Nodes.Add(rootNode);
                        Fill(rootNode);
                    }
                    else
                    {
                        TreeNode rootNode = new TreeNode(dname.Name);
                        rootNode.ImageIndex = 1;
                        rootNode.SelectedImageIndex = 1;
                        treeView1.Nodes.Add(rootNode);
                        Fill(rootNode);
                    }
                }
            }

            //첫번째 노드 확장
            treeView1.Nodes[0].Expand();

            //ListView 보기 속성 설정
            listView1.View = View.Details;

            //ListView Details 속성을 위한 헤더 추가
            listView1.Columns.Add("디렉토리.이름", listView1.Width / 5, HorizontalAlignment.Left);
            listView1.Columns.Add("이름", listView1.Width / 5, HorizontalAlignment.Left);
            listView1.Columns.Add("수정한 날짜", listView1.Width / 5, HorizontalAlignment.Left);
            listView1.Columns.Add("유형", listView1.Width / 5, HorizontalAlignment.Left);
            listView1.Columns.Add("크기", listView1.Width / 5, HorizontalAlignment.Left);

            //행 단위 선택 가능
            listView1.FullRowSelect = true;
        }
        /// <summary>
        /// 트리를 마우스로 클릭할 때 발생하는 이벤트
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            try
            {
                //기존의 파일 목록 제거
                listView1.Items.Clear();
                DirectoryInfo dir = new DirectoryInfo(e.Node.FullPath);

                int DirectCount = 0;
                //하부 데렉토르 보여주기
                foreach (DirectoryInfo dirItem in dir.GetDirectories())
                {
                    //하부 디렉토리가 존재할 경우 ListView에 추가
                    //ListViewItem 객체를 생성
                    ListViewItem lsvitem = new ListViewItem();

                    //생성된 ListViewItem 객체에 똑같은 이미지를 할당
                    lsvitem.ImageIndex = 2;
                    lsvitem.Text = dirItem.Name;

                    //아이템을 ListView(listView1)에 추가
                    listView1.Items.Add(lsvitem);
                    listView1.Items[DirectCount].SubItems.Add("");

                    listView1.Items[DirectCount].SubItems.Add(dirItem.CreationTime.ToString());
                    listView1.Items[DirectCount].SubItems.Add("폴더");
                    listView1.Items[DirectCount].SubItems.Add(dirItem.GetFiles().Length.ToString() + " files");
                    DirectCount++;
                }

                //디렉토리에 존재하는 파일목록 보여주기
                FileInfo[] files = dir.GetFiles();
                int Count = 0;
                foreach (FileInfo fileinfo in files)
                {
                    listView1.Items.Add(fileinfo.FullName);
                    listView1.Items[Count].SubItems.Add(fileinfo.Name);

                    if (fileinfo.LastWriteTime != null)
                    {
                        listView1.Items[Count].SubItems.Add(fileinfo.LastWriteTime.ToString());
                    }
                    else
                    {
                        listView1.Items[Count].SubItems.Add(fileinfo.CreationTime.ToString());
                    }
                    listView1.Items[Count].SubItems.Add(fileinfo.Attributes.ToString());
                    listView1.Items[Count].SubItems.Add(fileinfo.Length.ToString());
                    Count++;
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("에러 발생 : " + ex.Message);
            }
            treeView1.Nodes[0].Expand();
        }

        private void Fill(TreeNode dirNode)
        {
            try
            {
                DirectoryInfo dir = new DirectoryInfo(dirNode.FullPath);
                //드라이브의 하위 폴더 추가
                foreach (DirectoryInfo dirItem in dir.GetDirectories())
                {
                    TreeNode newNode = new TreeNode(dirItem.Name);
                    newNode.ImageIndex = 2;
                    newNode.SelectedImageIndex = 2;
                    dirNode.Nodes.Add(newNode);
                    newNode.Nodes.Add("*");
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show("에러 발생 : " + ex.Message);
            }
        }
        /// <summary>
        /// 트리가 확장되기 전에 발생하는 이벤트
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node.Nodes[0].Text == "*")
            {
                e.Node.Nodes.Clear();
                e.Node.ImageIndex = 3;
                e.Node.SelectedImageIndex = 3;
                Fill(e.Node);
            }
        }
        /// <summary>
        /// 트리가 닫히기 전에 발생하는 이벤트
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node.Nodes[0].Text == "*")
            {
                e.Node.ImageIndex = 2;
                e.Node.SelectedImageIndex = 2;
            }
        }

+ Recent posts