使用AppendTextAsync在metro C#应用程序中附加到CSV文件总是使输出加倍

时间:2013-12-11 04:50:25

标签: c# microsoft-metro windows-8.1

我正在为学校开展一个小项目,我决定将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;
    }

0 个答案:

没有答案