[ Silverlight ] 매트로놈(MetroMon)
내부적인 코드설명은 차후에 차근차근 알아 보도록 하겠습니다.
지금은 이렇게 잘 작동이되는지 확인 해보세요~^^
혹시 미리 소스를 보고 싶으신 분들은 미리 다운로드 가능합니다.
|
IsolatedSterage는 무엇??
Silverlight 애플리케이션을 만들다 보니깐 데이터를 임시적으로 저장할 필요를 느끼게 되었는데요. 알아 보니깐
IsolatedStorage 란것이 있다는 것을 알았어요. 일종의 가상공간(저장공간)이라고 생각하면 될 것 같아요.
그럼 IsolatedStorage를 어떻게 사용해야 하는지 알아 보도록 할게요. 혹시 전에 ASP.NET으로 파일을 생성하고 써보고 그랬더라면 더 쉽지 이해 할수 있지 않을까 생각이 듯네요. 전에는 FileInfo 클래스를 이용해서 파일을 생성했잖아요~!이것도 비슷합니다. 역시 열번의 말보다는 한번의 코드를 보는 것이 이해하는데 빠르겠지요^^
간단하게 Silverlight 예제 코드를 만들어 봤어요.
Page.xaml |
<UserControl x:Class="IsolatedStorage_Test.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"> <Grid x:Name="LayoutRoot" Background="White"> <!-- 테스트를 위한 버튼 생성 --> <!—파일생성 버튼 --> <Button Height="21" HorizontalAlignment="Left" Margin="24,23,0,0" VerticalAlignment="Top" Width="200" Content="Isolated Storage 생성" x:Name="btnsetfileinfo"/> <Button Height="21" HorizontalAlignment="Left" Margin="24,48,0,0" VerticalAlignment="Top" Width="200" Content="Isolated Storage 정보확인" x:Name="btngetfileinfo"/> <!—메세지 표시 텍스트블럭--> <!—파일삭제 버튼 --> </Grid> </UserControl> |
Page.xaml.cs |
// Linq To XML 사용 using System.Xml.Linq; // IsolatedStorage 사용 using System.IO.IsolatedStorage; using System.IO; namespace IsolatedStorage_Test { public partial class Page : UserControl { public Page() { InitializeComponent(); // Button Event // 파일쓰기 이벤트 btnsetfileinfo.Click += new RoutedEventHandler(btnsetfileinfo_Click) btngetfileinfo.Click += new RoutedEventHandler(btngetfileinfo_Click); btnfiledelete.Click += new RoutedEventHandler(btnfiledelete_Click); } /// <summary> /// 파일 삭제 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void btnfiledelete_Click(object sender, RoutedEventArgs e) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { // 파일있는지 확인 if (isf.FileExists("Test.xml")) { txbText.Text = "파일 있었으나 지금 삭제"; isf.DeleteFile("Test.xml"); } else txbText.Text = "파일없음"; } } /// <summary> /// 파일 읽기 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void btngetfileinfo_Click(object sender, RoutedEventArgs e) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { // 파일 있는지 확인 if (isf.FileExists("Test.xml")) { XDocument xdocu = XDocument.Load(isf.OpenFile("MyPolder.xml", FileMode.Open)); var query = from el in xdocu.Descendants("Root") select new { t = el.Element("Test").Value }; string str = string.Empty; foreach (var qy in query) { str = qy.t; } txbText.Text = str; } else { txbText.Text = "파일없음"; } } } /// <summary> /// 파일 쓰기 (Linq To Xml 쓰기) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void btnsetfileinfo_Click(object sender, RoutedEventArgs e) { using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream isfstream = new IsolatedStorageFileStream("Test.xml", FileMode.Create, isf)) { using (StreamWriter sw = new StreamWriter(isfstream)) { XElement element = new XElement("Root", new XElement("Test", "test...")); sw.Write(element); } } } } } } |