質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

1回答

2477閲覧

Windowsデベロッパーセンターのサンプルコードはどこに記述するべき?

Len

総合スコア11

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2017/10/25 08:14

###前提・実現したいこと
https://docs.microsoft.com/ja-jp/windows/uwp/audio-video-camera/process-media-frames-with-mediaframereader

上記のサイトに沿って手順を踏んでいたのですが初めのプロジェクトの設定で、サンプルコードのusingの塊や
var frameSourceGroups = await MediaFrameSourceGroup.FindAllAsync(); ...(1)をどのファイルのどこに記入すればよいのかわかりません。

開発環境はVisualStudio Community 2017を使用しています。プロジェクトはUWPの空のプロジェクトで作成しました。

###発生している問題・エラーメッセージ

###該当のソースコード

C#

1 2using System; 3using System.Collections.Generic; 4using System.IO; 5using System.Linq; 6using System.Runtime.InteropServices.WindowsRuntime; 7using Windows.Foundation; 8using Windows.Foundation.Collections; 9using Windows.UI.Xaml; 10using Windows.UI.Xaml.Controls; 11using Windows.UI.Xaml.Controls.Primitives; 12using Windows.UI.Xaml.Data; 13using Windows.UI.Xaml.Input; 14using Windows.UI.Xaml.Media; 15using Windows.UI.Xaml.Navigation; 16using Windows.Media.Capture.Frames; 17using Windows.Devices.Enumeration; 18using Windows.Media.Capture; 19using Windows.UI.Xaml.Media.Imaging; 20using Windows.Media.MediaProperties; 21using Windows.Graphics.Imaging; 22using System.Threading; 23using Windows.UI.Core; 24using System.Threading.Tasks; 25using Windows.Media.Core; 26 27// 空白ページの項目テンプレートについては、https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x411 を参照してください 28 29namespace Myapp 30{ 31 32 /// <summary> 33 /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。 34 /// </summary> 35 public sealed partial class MainPage : Page 36 { 37 public MainPage() 38 { 39 this.InitializeComponent(); 40 41 var frameSourceGroups = await MediaFrameSourceGroup.FindAllAsync(); 42 } 43 44 } 45 46}

###試したこと
上記Webサイトのサンプルコードの手順に沿って
usingの塊をMainPage.xaml.csに加え、同ファイルの初めからあったMainPageクラスの中に上記の(1)を書くと

エラー CS0825 コンテキスト キーワード 'var' は、ローカル変数宣言内またはスクリプト コード内でのみ有効です。
エラー CS1992 'await' 演算子は、'async' 修飾子が指定されているメソッドまたはラムダ式に含まれている場合にのみ使用できます

とでます。
今度は、(1)をMainPageクラス内のpublic MainPage()メソッド内に記入すると

エラー CS4033 'await' 演算子は、非同期メソッド内でのみ使用できます。このメソッドに 'async' 修飾子を指定し、戻り値の型を 'Task' に変更することを検討してください。

とでます

awaitやasyncなどについて調べてみましたが以前エラーの解決策がわかりません、助けていただけないでしょうか

###補足情報(言語/FW/ツール等のバージョンなど)
VisualStudio Community 2017
まだC言語しか使ったことないのでC#についてはわかってない初心者です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

C#

1public MainPage() 2{... 3}

ここはコンストラクタであるため、エラーメッセージの言うように「 'async' 修飾子を指定」することが出来ないです。ググれば無理矢理やる方法も見つかるとは思うのですが、基本的には…コンストラクタで時間の掛かる実作業を行うのは避けた方が良いです。ここはUIを作る「ページ」のクラスですので、例えば作業に失敗してもこの場所ではエラーメッセージをページ上に出すこともできません。

こういったUWP AppでCodeBehind 上に「(ユーザーの操作前に)最初に走る」コードを書いていく場合、例えば OnNavigatedTo メソッドをオーバーライドしてそこから処理を書き始めるのが一般的と思います。
お手持ちのMainPage.xaml.csにも、既に以下のようなメソッドが定義されていないでしょうか?(無ければ付け足していいです)。このメソッドはユーザーがこのページに飛んできた場合必ず呼ばれるので、今回のCallはここに記述することができます。

(戻る・進む等を実装すると注意が必要になりますが、それは又先の話でしょう)

C#

1protected override async void OnNavigatedTo(NavigationEventArgs e) 2{ 3 ... 4}

また当該Docsのページを見ましたが、このサンプルは動くようになるまでかなり道が遠いタイプですので...C#やUWP Appを触り慣れていないと正直手ごわいと思います。既に出来上がったサンプルを見るのもいいかもしれないです。

以下のZipをDL・展開すると見つかる、Samples\CameraFrames がそれです。

https://github.com/Microsoft/Windows-universal-samples/archive/master.zip

なお、このサンプル CameraFrames では CameraFrames/cs/Scenario1_DisplayDepthColorIR.xaml.cs の中で await MediaFrameSourceGroup.FindAllAsync() をCallしているのですが、これもコンストラクタの中からではなく、OnNavigatedTo から順に呼んでいる形になります。参考にしてみてください。

投稿2017/10/27 00:30

pnp0a03

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問