어느날 갑자기 집 컴터의 IE8에서 개발자도구를 키면 분명 이놈이 실행은 되는데 볼수는 없는
기이한 현상이 생겼습니다.
귀찮아서 걍 냅뒀는데..
이제 회사 컴터에서도 그래서
열심히 검색검색...
이거저거 다 검색해보고
영어로도 검색해 봐도 못찾다가..
엄하게. 찾게 됐네요..

처음 적용했더니
적용이 안되길래
IE 다 끄고 다시 했드니. 잘 되네요..

더 웃긴건..
뭐라고 검색해서 찾았는지 기억이 안남.. (5분도 안됐는데...)
열어본 페이지에서도 못찾겠음..(오늘 날짜로 들어간 페이지가 10개도 안되는데. 없음...;;;;)

출처를 남기려 했는데.... (ms쪽에 질문해서 답변 받은 페이지 같았는데.. ;;;;)
그래도 질답 페이지였으니.. ㅠㅠㅋ

암튼 그 문제의 원인은
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools 에 있는 WindowsPos의 값이
너무 높게 설정되어 있어서 생긴 문제라고 하네요..

해결 방법은
아래 내용을 그냥 메모장에 넣고.
ie.reg 이름으로 저장한 후 실행하면 됩니다..

으으~~~

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools]
"Disabled"=dword:00000000
"UseDevToolsDebugger"=dword:00000001
"Pinned"=dword:00000000
"Minimized"=dword:00000000
"MinimizedRestoreHeight"=dword:00000000
"MenuBar"=dword:00000001
"ActiveTab"=dword:00000000
"ActivePaneLeft"=dword:00000000
"WindowPos"=hex:0a,00,00,00,0a,00,00,00,00,04,00,00,00,03,00,00
"1"=hex:

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options]
"ValidateHtml"="http://go.microsoft.com/fwlink/?LinkID=129216&verbose=1&uri=%url%"
"ValidateCss"="http://go.microsoft.com/fwlink/?LinkId=129217&profile=css2&warning=2&uri=%url%"
"ValidateRss"="http://go.microsoft.com/fwlink/?LinkId=129220&url=%url%"
"ValidateLocalHtml"="http://go.microsoft.com/fwlink/?LinkId=129218"
"ValidateLocalCss"="http://go.microsoft.com/fwlink/?LinkId=129219"
"ValidateLinks"="http://go.microsoft.com/fwlink/?LinkId=129221&check=Check&hide_type=all&summary=on&uri=%url%"
"ValidateAcc508"="http://go.microsoft.com/fwlink/?LinkId=129222&rptmode=-1&url1=%url%"
"ValidateAccWCAG"="http://go.microsoft.com/fwlink/?LinkId=129223&rptmode=2&url1=%url%"
"ValidateHtmlDomain"="w3.org"
"ValidateCssDomain"="w3.org"
"ValidateRssDomain"="feedvalidator.org"
"ValidateLocalHtmlDomain"="w3.org"
"ValidateLocalCssDomain"="w3.org"
"ValidateLinksDomain"="w3.org"
"ValidateAcc508Domain"="contentquality.com"
"ValidateAccWCAGDomain"="contentquality.com"

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\BkgColor]
"ClassIDBkgColor"="#FFCCCC"
"LinkPathBkgColor"="#FFCCCC"
"TabIndexBkgColor"="#FFCCCC"
"AccessibilityBkgColor"="#FFCCCC"
"ImgDimsBkgColor"="#FFCCCC"
"ImgSrcBkgColor"="#FFCCCC"
"ImgSizeBkgColor"="#FFCCCC"
"ImgAltTxtBkgColor"="#FFCCCC"

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\DisableScript]

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\Resize]

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\Ruler]
"SnapToXY"=dword:00000001
"SnapToElements"=dword:00000000
"HideTicks"=dword:00000000
"HideEndPoints"=dword:00000000
"RulerCurrentColor"=dword:00000000
"RulerColor1"=dword:00ffffff
"RulerColor2"=dword:00000000
"RulerColor3"=dword:000000ff
"RulerColor4"=dword:0000ff00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\ZoneOptions]

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\ValidateConsent]


by 피요히코~ 2010. 10. 30. 00:39

요즘 delegate랑 thread를 열심히(?) 공부하고 있습니다..
나름 좀 이해가 된다고 생각은 되지만
언제 어떻게 적용하면 좋을지는 아직 잘 모르겠네요..;;;;

예제 코드는 이렇습니다.
일단 비동기로 호출할 Add 메서드가 있습니다.


public static int Add(int op1, int op2, out int result)
{
    Console.WriteLine("[Add] 시작...");
    Thread.Sleep(3000);
    Console.WriteLine("[Add] 끝...");
    return (result = op1 + op2);
}

중간 중간 화면에 하고 있는걸 보여주고
실제로 뭔가 하는거 처럼 보이도록 Thread.Sleep 을 해줍니다.


그리고 delegate도 하나 선언해 줍니다.

public delegate int AddDelegate(int op1, int op2, out int result);

이 delegate는 위에 있는 Add메서드와 signature가 같습니다.

그리고 다음과 같은 메인코드가 있습니다.

static void Main(string[] args)
{
    int result;

    AddDelegate add = new AddDelegate(Add);

    Console.WriteLine("[Main] 비동기로 Add메서드 Invoke");
    IAsyncResult iAR = add.BeginInvoke(6, 42, out result, null, null);  

    Console.WriteLine("[Main] 뭔가 하는거 처럼 보이도록...");

    for (int i = 0; i < 10; i++)
    {
        Thread.Sleep(200);
        Console.Write(".");
    }

    Console.WriteLine("\n[Main] Add메서드가 끝날때 까지 대기...");
    iAR.AsyncWaitHandle.WaitOne();
    Console.WriteLine("[Main] Add메서드 종료");

    add.EndInvoke(out result, iAR); 
    Console.WriteLine("[Main]  result 는 '{0}'", result);
    Console.ReadLine();
}




메인에서는 delegate에 메서드를 넣어서 만들어 주고
BeginInvoke해 줍니다.
(BeginInvoke의 네번째와 다섯번째 파라미터는 callBack과 위임 객체에 접근하기 위한 참고객체 입니다.)
그러면 Add메서드를 호출하는 작업스레드를 생성해 주고 IAsyncResult객체를 반환해 줍니다.
그 객체는 iAR에 들어가겠죠

중간에 들어있는 for문은 그냥 메인도 뭔가 하는거 처럼 보이게 하기위한 코드 입니다.

그리고 반환받은 IAsyncResult객체를 이용해서
스레드가 끝날 때 까지 대기 하도록 WaitOne을 호출 해 줍니다.

그 후에 EndInvoke를 이용해서 결과값을 반환 받습니다.
EndInvoke는 Add메서드와 동일한 반환값을 가지므로
result를 out으로 안해도 값을 받아올 수 있습니다.

간단해 보이는데
참 난감하네요. ;;

by 피요히코~ 2010. 10. 8. 16:44
| 1 |