posted by 준치 2008. 10. 23. 17:48
구글 검색에서 찾은 중요한 정보
웹서비스 호출해서 값을 가져왔는지 텍스트 박스에 넣어 보려고 callback함수에 값을 넣는 순간
스레드 에러가 나서 찾아보니 이런게 있군여...밑에 비슷한 현상이나 뭐..읽어보면 도움이 됩니다.

WebClient나 HttpWebRequest 함수가 silverlight 2.0 beta1에서 beta2 버전업 되면서 변경된 점이 있습니다.

.NET 에 http://chaoskcuf.com/87 와 비슷한 현상인데요.
Backgound Thread가 UI Thread를 건들면 SecurityException이 발생하는 내용입니다.

WebClient와 HttpWebRequest를 사용하여 비동기 통신을 할 경우
실버라이트 2.0 beta1까지는 Complete 관련 delegate에서
TextBox의 Text를 바꾸는 등의 UI thread에 접근하여도 아무런 제약이 없었습니다.
그러나 beta2 에서는 비동기 메서드에 new TextBox() 처럼 UI와 관련된 작업을 하면
SecurityException이 발생합니다
Exception 내용은 Invalid cross-thread access 입니다.

원인은 beta2 부터는 WebClient, HttpWebRequest delegate가 Background Thread로 반환이 되기 때문입니다.
어찌보면 비동기 콜백이 UI 단을 건드리면서 나타나는 deadlock 발생 가능성을 미연에 방지하기 위함입니다.

이 문제를 해결하기 위해서는 두가지 방법이 있습니다.
SynchronizationContext 라는 새로 추가된 클래스를 사용하시는 방법이 있고,
비동기 메서드 내에서 아래와 같이 Dispatcher.BeginInvoke() 함수를 사용하시는 방법이 있습니다.

void ResponseHandler(IAsyncResult result)
{
    //....... result에 대한 처리
    Dispatcher.BeginInvoke(delegate()
    {
        txtText.Text = "Test";
    });
}

참고로 추가로 변경된 사항을 말씀드리면,
WebClient 의 BassAddress URI가 로컬 경로도 사용할 수 있게끔 변경되었고,
WebClient에 UploadString 관련 함수가 추가되었습니다. 그래서 서버측으로 POST를 날리는 것도 쉬워지겠네요
posted by 준치 2008. 10. 16. 14:53
 

SilverLight 설치

2008년 10월 16일 목요일

오후 1:43

실버라이트 사이트 : http://silverlight.net

 

실버라이트 실행하기 위해 기본적으로 Visual Studio 2008 필요

 - 상황에 따라서는 설치가 필요 수도 있는 같음.
 -
기본은 영문으로 설치

  • Visual Studio 2008 설치가 되어있다면 Visual Studio sp1 설치 되어야 .

 - Microsoft Visual Studio 2008 Service pack 1
 - File Name :
VS90sp1-KB945140-ENU.exe
 - Url :
http://www.microsoft.com/downloads/details.aspx?FamilyID=fbee1648-7106-44a7-9649-6d9f6d58056e&DisplayLang=en
 

posted by 준치 2008. 10. 15. 15:14

Silverlight 개발환경


드디어 Silverlight 1.0 RC(Release Candidate)과 함께 Visual Studio 2008 Beta2가 발표되었다.

Silverlight application개발을 위해서는 우선 자신의 환경에 맞는 runtime을 아래 4가지중 하나에서 선택하여 설치하여야 한다.

개발을 위해서 설치해야하는 Tool들은 다음과 같다.

기본적인 개발도구로는 VS2008 Beta2와 VS Extensions for Silverlight만 설치하면 되며 SDK를 설치하면 문서나 샘플등이 들어있다.
------------------------------------------------------------------------------------------------------

Silverlight 개발환경

 

1. 통합개발환경(IDE) [Mandatory]

Visual Studio 2008 (.NET3.5를 지원, Visual Studio 2005 .NET3.0까지만 지원)

Visual Studio SP1

2. Silverlight Tools Beta 2 for Visual Studio 2008(Silverlight Plugin) [Mandatory]

Visual Studio에서 Silverlight 항목과 프로젝트 템플릿 생성

3. Silverlight 2 Beta 2 Runtimes[Mandatory]

Silverlight를 실행하기 위하여 설치

 

4. Expression Blend 2.5 June 2008 Preview [Optional]

각종 모션이나 효과를 지원

5. Expression Design [Optional]

각종 도형을 디자인

6. Expression Encoder[Optional]

동영상을 Encoding하기 위하여

 

또는 Microsoft Expression Studio (Total Package) 설치

- Expression Blend, Expression Design, Expression Media, Expression Web

 

7. Deep Zoom Composer[Optional]

Deep Zoom 기능을 위한 Deem Zoom Composer


아~~ 진짜 말이 쉽지 겁나 헤매네.....

posted by 준치 2008. 10. 14. 18:32
 

2주전쯤 Expression Blend(이하 Blend)를 설치하고 나서, 막상 사용하려고 하니 도대체 뭘 어떻게 해야 하는지 참으로 막막했다. 하여, Blend 데모 사이트에서 Tutorial을 몇 개 다운받아서 일일이 타이핑을 해보며 따라 해본 덕에, 겨우 기본적인 것들은 할 수 있게 되었다.

 

몇 가지 알게 된 사실을 공유해보도록 한다.

 
1.     Blend UI


Blend의 UI는 꽤 세련되어 와~~ 라는 감탄사가 나왔다. Blend의 Architect인 John Grossman의 블로그를 살펴보니, 이거 만드는 데 4년 걸렸다고 한다.

Blend의 메인 UI 는 Design workspace (디폴트. Window/Design Workspace(F6)메뉴) 와 Animation workspace(Window/Animation Workspace(F7)) 로 구분되며 Animation workspace일 때는 UI가 다음처럼 바뀐다.



2. Toolbox

 Blend toolbox는

선택, 줌, 패닝 등 편집에 필요한 버튼과,
3D 제작에 필요한 카메라 설정 버튼,
Path 제작에 사용되는 Paint Bucket, Pen 버튼,
Brush 트랜스폼에 사용되는 버튼, 그리고
실제적으로 WPF 객체를 유형에 따라 Rectangle, Ellipse, Line등 Shape 버튼,
Grid등 Layout 객체 버튼,
Label, TextBox 등 텍스트 관련 버튼,
Button, Slider, Tab등 기본 FramworkElement 객체,
그리고, Custom Control등을 불러다 쓸 수 있게 한 Asset 버튼으로 구성된다.

* 각 버튼을 왼쪽 마우스로 선택하면 되고
  선택한 버튼에서 오른쪽 마우스를 누르면 그 버튼과 관련된 다른 기능들이 팝업으로 나타난다.

**  Blend에서는 더블 클릭이 매우 중요한 역할을 한다. Shape등 객체 버튼을 더블 클릭하면 Default 속성을 가진 객체가 작업 영역인 Art board 에 그려진다.

















3. Object and Timeline

Toolbox에서 Rectangle 객체를 더블클릭하여 삽입한 뒤의 Object & Timeline 박스의 내용이다.

LayoutRoot 는 default로 Grid 객체다. - Tool/Options 메뉴에서 Artboard를 선택하여 Use Grid layout 부분을 uncheck하면 default LayoutRoot 가 Canvas 객체로 바뀐다.

각 항목을 선택하면 Artboard에서 해당 객체가 선택된다.

* 여기서 노란색 테두리의 의미가 매우 중요하다. 노란색 테두리는 Layout객체에서만 나타나는데, 의미는, 새롭게 삽입되는 객체의 Parent를 지정하는 역할을 한다.

예를 들어 Border등 새로운 Layout객체를 삽입하면 Window는 두개의 Layout객체가 있게 되는 데, 이 후 그냥 Rectangle을 삽입하면 rectangle의 parent는 LayoutRoot다. 하지만, Border를 더블 클릭한 뒤 삽입하면 Rectangle은 Border의 Child가 된다.

** Timeline은 Trigger(혹은 Event)가 객체에 지정되면 나음처럼 나타난다.



4. Property 박스


프로퍼티 박스는 기본적으로 Brushes/Appearance/Layout/Common Properties/Transform/Miscellaneous로 카테고리화 되어 있는데, MediaElement등 특정 개체에만 있는 속성이 있는 경우, 이와 관련된 탭이 나타난다.

* 빨간색 동그라미를 친 부분처럼 각 프로퍼티 옆에는 작은 정사각형이 있는데 이것은 아래처럼 Advanced menu를 나타나게 하는 것으로 주로 Data Binding을 지정할 때 많이 사용한다.


** Blend의 재미있는 기능 중 하나는 Search 부분이다. 프로퍼티 박스에서 Search 부분은 특정 단어를 그림처럼 타이핑하면 자동으로 해당 프로퍼티가 나타난다.


5. Interaction 박스

Interaction 박스에서 MouseEnter, MouseLeave 처럼 각 객체에는 Event(혹은 Trigger)를 지정할 수 있는데, 이 과정은 2단계로 진행된다.

Step 1.  Event(혹은 Trigger) 생성 단계 - 아래 그림처럼 +Event 를 누르면 default로 Window.Loaded 가 나타난다. 이것은 그 아래 표시된 것처럼 When 이하 항목을 조정하면 내용을 바꿀 수 있다.



예로 When Window 대신 [Button]을 선택하고 Loaded 대신 MouseEnter를 선택한 뒤, is raised 옆의 + 버튼을 누르면 화면은 아래 그림처럼 바뀐다.

Blend의 Event는 기본적으로 2D Animation의 StoryBoard에 의지한다. + 버튼을 누르면 대부분 다음과 같은


메시지 박스가 나타난다. 보통은 OK를 누른다.

Step 2. Event Animation 생성 단계 - Object and Timeline 박스에서 Timeline 부분이 나타나면 Timeline 부분의 노란색 선을 사용해서 시간 간격(Duration)과 Animation을 하고자 하는 프로퍼티 값을 지정할 수 있다. - Timeline이 나타날 때는 Artboard에 붉은 색으로 "Timeline recording is on" 이란 부분이 나타나는 데, 이 글귀의 의미는 우측 프로퍼티 창에서 변경하는 속성은 Animation용으로 변경되는 것이지l, 일반 편집때 변경하는 속성이 아니라는 의미이다.

위 그림은 MouseEnter 이벤트가 발생한뒤 0.5초 까지 Button의 Background Brush를 붉은 색으로 바꾸도록 지정한 것이다.
물론 Rotation 등 다른 속성들도 추가로 지정할 수 있다. - 이처럼 여러개의 속성 변경을 할 수 있기 때문에 Record 한다는 메시지가 나오는 것임.

지정한 Animation의 동작을 보려면 Timeline 창의 윗쪽에 위치한 Animation Play관련 버튼을 누르거나, 노란색 Time snap 라인을 좌우로 이동해 보면 된다.

이 recording 모드에서 빠져 나오려면 아래 그림처럼  맨 상단의 Combo 박스를 열어 Default를 선택하거나, (화면이 가려져서 안보이지만) Window 좌측 옆의 위화살표를 누르거나 하면 된다.



이상은 아주 기본적인 사용법을 열거한 것이다. Blend의  메뉴들에는 Style, Data Binding, Control template 생성, Resource 등 WPF와 관련된 많은 기능들이 들어 있다.

퍼왔습니다...앤드류님 쌩유입니다....