none
[文件关联&共享源]有关页面跳转和事件注册的求助 RRS feed

  • 问题

  • 1.为了实现共享功能,我有如下代码:

    void ReadPage::OnNavigatedTo(NavigationEventArgs^ e) { dataRequestedToken = DataTransferManager::GetForCurrentView()->DataRequested += ref new TypedEventHandler<DataTransferManager^, DataRequestedEventArgs^>(this, &ReadPage::OnDataRequested); //。。。 }

    void ReadPage::OnNavigatedFrom(NavigationEventArgs^ e)
    {
    DataTransferManager::GetForCurrentView()->DataRequested -= dataRequestedToken;
    }

    2.为了实现文件关联功能,我有如下代码:

    void App::OnFileActivated( Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args )
    {
    	auto rootFrame = ref new Frame();
    	rootFrame->Navigate(pageType );
    	Window::Current->Content = rootFrame;
    	auto rootPage = safe_cast<ReadPage^>(rootFrame->Content);
    	Window::Current->Activate();
    }

    问题来了:当我的应用正在运行时,我运行关联文件,程序响应

    OnFileActivated方法,并导航到ReadPage页面,
    会在DataTransferManager::GetForCurrentView()->DataRequested处Crash!

    这两个功能的实现方法分别是参考官方例子Association launching sample和Sharing content source app sample。请问我该做什么修改才能解决我遇到的问题呢?

    谢谢!

    2012年5月7日 7:31

答案

  • 谢谢你的回答。

    我已经找到解决方法了。我不能在已经有一个frame的情况下再new一个frame去操作,而是要获取以前的frame来操作。

    2012年5月9日 3:36

全部回复

  • 从代码上看是没有问题,首先我想确认是NavigateTo还是NavigateFrom的出现问题并Crash? 能够断点抓到一些信息吗? 或者你能都给到我一个可以重现的例子,或者上传到www.skydrive.com 我好给测试下。

    还有,是否此问题在意一次发布后打开关联文件不会发生,而从第二次开始就会发生。 请确认dataRequestedToken 在没有加上Handler之前的状态。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月8日 9:23
    版主
  • 是NavigateTo,因为DataRequested 事件重复了。

    但是不知道怎么解决,怎么判断有没有加上Handler的状态。

    2012年5月8日 9:49
  • 判断 dataRequestedToken ,先从DataTransferManager::GetForCurrentView()->DataRequested 里面 -= 一个Handler,然后再加。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年5月9日 2:40
    版主
  • 谢谢你的回答。

    我已经找到解决方法了。我不能在已经有一个frame的情况下再new一个frame去操作,而是要获取以前的frame来操作。

    2012年5月9日 3:36