我正在为学校开展一个小项目,我决定将Metro应用程序用于用户界面。我需要一种简单的方法来快速,轻松地存储数据,我唯一能找到的东西似乎是使用StorageFolder和StorageFiles进行异步读/写操作。
我正在使用Split-Page metro应用程序模板使用Visual Studio 2012。
我现在使用的代码正是我需要它做的,除了它将我的数据输出到文件两次。
我在自己单独的异步函数中进行了读写操作,并将输出的字符串传递给它,但是这种方法更容易发布所有内容,但它们都有相同的行为。
当添加用户按钮事件消失时,它会执行一切到.AppendTextAsync调用,然后显示跳回到storageFolder chocFolder = ApplicationData.Current.LocalFolder行并再次执行createFileAsync和AppendTextAsync部分。
每次执行该函数时,最终都会将csvString的内容写入文件两次。
如果有人有任何建议,我们将不胜感激。
private async void _addUserButtonClicked(object sender,
Windows.UI.Xaml.RoutedEventArgs e)
{
//create a Member Object with the added data
Chocoholics_Anonymous.Common.Member newMember =
new Chocoholics_Anonymous.Common.Member(Convert.ToInt32(MemberIdBox.Text),
MemberNameBox.Text,
StreetAddressBox.Text,
CityBox.Text,
StateBox.Text,
Convert.ToInt32(ZipBox.Text));
//Change display information.
IsAddedBox.Text = "Added to database -" +
"\nUserID : " + MemberIdBox.Text +
"\nMember : " + MemberNameBox.Text +
"\nStreet Address : " + StreetAddressBox.Text +
"\nCity : " + CityBox.Text +
"\nState : " + StateBox.Text +
"\nZip : " + ZipBox.Text;
//format the string being appended to the file.
string csvString = MemberIdBox.Text + "," + MemberNameBox.Text +","
+ StreetAddressBox.Text + ","
+ CityBox.Text + ","
+ StateBox.Text + ","
+ ZipBox.Text + "\n";
StorageFolder chocFolder = ApplicationData.Current.LocalFolder;
//Open the file Asynchronusly for writing
StorageFile chocFile = await chocFolder.CreateFileAsync("ChocAnUserData.csv",
CreationCollisionOption.OpenIfExists);
//Append string to file
await Windows.Storage.FileIO.AppendTextAsync(chocFile, csvString);
//Make Display visible.
IsAddedBox.Visibility = Visibility.Visible;
}