🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

1668閲覧

Xamarin、iOSでのTimer監視下での画像表示について

tochikun

総合スコア1

C#

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2020/11/30 00:37

編集2020/11/30 05:44

IISサーバー側にて数秒内で
1〜7枚作成される画像をXamarinのiOSにて表示しようとしています。
Androidは表示できたのですが、
iOSは何故かうまくいきません。
手法は単純でタイマーで監視し経過したら
サーバー内のHTTPアドレスを見に行く感じです。
Android版の方では特に問題なく表示します。
何故かiOSになると表示されません。
何か原因があるのでしょうか?

よろしくお願い致します。

c#

1using System.Timers; 2using Xamarin.Forms; 3 4namespace Assd1Tab.Views 5{ 6 public partial class ReceiveDataPageiOS : ContentPage 7 { 8 /// <summary>Timer用コントロール</summary> 9 public Timer Timer1 { get; set; } = null; 10 11 public ReceiveDataPageiOS() 12 { 13 InitializeComponent(); 14 Timer1 = new Timer(); 15 Timer1.Interval = 1000; 16 Timer1.Start(); 17 Timer1.Elapsed += new ElapsedEventHandler(OnTimerEvent); 18 } 19 20 /// <summary> 21 /// タイマーイベント 22 /// </summary> 23 /// <param name="source"></param> 24 /// <param name="e"></param> 25 private void OnTimerEvent(object source, ElapsedEventArgs e) 26 { 27 Image1.Source = "http://192.168.0.10/Pic1/Pic0.Jpeg"; 28 Image2.Source = "http://192.168.0.10/Pic1/Pic1.Jpeg"; 29 Image3.Source = "http://192.168.0.10/Pic1/Pic2.Jpeg"; 30 Image4.Source = "http://192.168.0.10/Pic1/Pic3.Jpeg"; 31 Image5.Source = "http://192.168.0.10/Pic1/Pic4.Jpeg"; 32 Image6.Source = "http://192.168.0.10/Pic1/Pic5.Jpeg"; 33 Image7.Source = "http://192.168.0.10/Pic1/Pic6.Jpeg"; 34 Image8.Source = "http://192.168.0.10/Pic1/Pic7.Jpeg"; 35 36 } 37 38 /// <summary> 39 /// コンテンツロードイベント(このフォーム呼び出し時のイベント) 40 /// </summary> 41 /// <param name="sender"></param> 42 /// <param name="e"></param> 43 private void ContentPage_Appearing(System.Object sender, System.EventArgs e) 44 { 45 Image1.Source = "http://192.168.0.10/Pic1/Pic0.Jpeg"; 46 } 47 48 /// <summary> 49 /// コンテンツアンロードイベント(このフォーム消去時のイベント) 50 /// </summary> 51 /// <param name="sender"></param> 52 /// <param name="e"></param> 53 private void ContentPage_Desappearing(System.Object sender, System.EventArgs e) 54 { 55 } 56 private void ContentPage_LayoutChanged(object sender, System.EventArgs e) 57 { 58 59 } 60 } 61} 62 63 64<?xml version="1.0" encoding="UTF-8"?> 65<ContentPage 66 xmlns="http://xamarin.com/schemas/2014/forms" 67 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 68 x:Class="Assd1Tab.Views.ReceiveDataPageiOS" 69 Appearing="ContentPage_Appearing" Disappearing="ContentPage_Desappearing" LayoutChanged="ContentPage_LayoutChanged"> 70 <ContentPage.Content > 71 <StackLayout Padding="0,0,0,0" VerticalOptions="Center"> 72 <Grid x:Name="ReciveGrid" RowSpacing="0" ColumnSpacing="0"> 73 <Grid.RowDefinitions> 74 <RowDefinition Height="100"/> 75 <RowDefinition Height="100"/> 76 </Grid.RowDefinitions> 77 <Grid.ColumnDefinitions> 78 <ColumnDefinition /> 79 <ColumnDefinition /> 80 <ColumnDefinition /> 81 <ColumnDefinition /> 82 <ColumnDefinition /> 83 <ColumnDefinition /> 84 <ColumnDefinition /> 85 <ColumnDefinition /> 86 </Grid.ColumnDefinitions> 87 <Image x:Name="Image1" Grid.Column="1" Grid.Row="0"/> 88 <Image x:Name="Image2" Grid.Column="2" Grid.Row="0"/> 89 <Image x:Name="Image3" Grid.Column="3" Grid.Row="0"/> 90 <Image x:Name="Image4" Grid.Column="4" Grid.Row="0"/> 91 <Image x:Name="Image5" Grid.Column="5" Grid.Row="0"/> 92 <Image x:Name="Image6" Grid.Column="6" Grid.Row="0"/> 93 <Image x:Name="Image7" Grid.Column="7" Grid.Row="0"/> 94 <Image x:Name="Image8" Grid.Column="8" Grid.Row="0"/> 95 </Grid> 96 </StackLayout> 97 </ContentPage.Content> 98</ContentPage>

VisualStudio2019の最新版です

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

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

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

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

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

guest

回答1

0

ベストアンサー

メインスレッドでImageSourceを設定する様にしてみて下さい。

C#

1private void OnTimerEvent(object source, ElapsedEventArgs e) 2{ 3 Device.BeginInvokeOnMainThread(() => 4 { 5 Image1.Source = "http://192.168.0.10/Pic1/Pic0.Jpeg"; 6 Image2.Source = "http://192.168.0.10/Pic1/Pic1.Jpeg"; 7 Image3.Source = "http://192.168.0.10/Pic1/Pic2.Jpeg"; 8 Image4.Source = "http://192.168.0.10/Pic1/Pic3.Jpeg"; 9 Image5.Source = "http://192.168.0.10/Pic1/Pic4.Jpeg"; 10 Image6.Source = "http://192.168.0.10/Pic1/Pic5.Jpeg"; 11 Image7.Source = "http://192.168.0.10/Pic1/Pic6.Jpeg"; 12 Image8.Source = "http://192.168.0.10/Pic1/Pic7.Jpeg"; 13 }); 14}

投稿2020/11/30 06:26

f-miyu

総合スコア1625

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

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

tochikun

2020/11/30 09:20

単刀直入なアドバイス有難うございます。 解決致しました。 ただ、一つ気がかりなのは Device.BeginInvokeOnMainThread というものなのですが 一体これは何者なのでしょうか?
f-miyu

2020/11/30 09:25

引数で与えたActionをメインスレッドで実行するメソッドです。基本的にUIの表示に関わる処理はメインスレッドで行う必要があります。
tochikun

2020/11/30 09:43

なるほど。 今回の場合はTimerで 複数スレッドが起動してた様な 感じでしょうか?
f-miyu

2020/11/30 10:05

そうです。Timerは別スレッドで動いているので、BeginInvokeOnMainThreadでメインスレッドにする必要があったというわけです。
tochikun

2020/11/30 23:20

最後までご丁寧にありがとうございます。 大変ご参考になりました。 重ねて有難うございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問